gpt4 book ai didi

c# - 检查 Excel 文件是否有 "Sheet protection"或 "Custom defined properties in cells"

转载 作者:行者123 更新时间:2023-11-30 20:44:14 25 4
gpt4 key购买 nike

给定一个 Excel(*.xls、*.xlsx、*.xlsm)文件,是否可以读取其属性并查明是否有任何工作表受到保护或是否有任何单元格具有自定义属性。

我找不到用于此目的的库。

我需要知道此信息,以便基于它我可以决定使用 Office Web Apps 显示 Excel 文件的预览。

最佳答案

您可以使用 Open XML SDK 分析和修改现代“Open XML”(*.xlsx) 格式.

这是一个关于如何确定工作表是否受到保护的示例:

using System.Linq;
using System.Collections.Generic;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

class Test
{

static void Main()
{
string filePath = @"C:\MyProtectedSheet.xlsx";
using (var spreadSheetDocument = SpreadsheetDocument.Open(filePath, true))
{
var workbookPart = spreadSheetDocument.WorkbookPart;
var sheets = spreadSheetDocument.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
string relationshipId = sheets.First().Id.Value;
var worksheetPart = (WorksheetPart)spreadSheetDocument.WorkbookPart.GetPartById(relationshipId);
var workSheet = worksheetPart.Worksheet;
var protections = worksheet.Elements<SheetProtection>();

if(protections.Any())) {
Console.WriteLine("Sheet is protected.");
}
}
}
}

也可以使用 SDK 查找自定义属性。我建议您使用 OpenXML SDK Productivity Tool 打开一个最小示例文件
(SDK 的一部分)并找到相关的标签/属性。然后您可以按照上述示例中的模式尝试在文档树中找到它们。

处理像 *.xls 这样的遗留格式要困难得多。您可以使用 COM 自动化来了解保护,但这需要在您的代码应该运行的机器上安装 Excel。或者,您可以求助于商业第三方组件,如 Apose Cells .

关于c# - 检查 Excel 文件是否有 "Sheet protection"或 "Custom defined properties in cells",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29646021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com