我需要阅读Worksheet.CustomProperies。有什么方法可以读取此属性?
我也尝试使用获取工作簿和工作表的XmlDocument
XmlDocument xlDoc = ws.WorksheetXml;
给我:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<dimension ref="A3:K24" />
<sheetViews>
<sheetView tabSelected="1" workbookViewId="0"><selection activeCell="H14" sqref="H14" /></sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight="15" />
<cols></cols><sheetData />
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3" />
<pageSetup orientation="portrait" horizontalDpi="4294967293" verticalDpi="4294967293" r:id="rId2" />
**<customProperties><customPr name="My_CustomProperty" r:id="rId3" /></customProperties>**
</worksheet>
我可以在此处看到CustomProperty,但看不到CustomProperty值。当我转到CustomProperty bin文件(将xlsx压缩并提取内容)时,值就存在了。
我已经上传了文件here
最佳答案
我不熟悉这些自定义属性,但这是使用最新版本的EPPlus从示例文档中提取customProperty1.bin文件内容的一种方法:
using (ExcelPackage p = new ExcelPackage(new FileInfo(@"C:\Users_Template_12_22_Template.xlsx")))
{
var parts = p.Package.GetParts();
foreach (var part in parts)
{
if (part.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty")
{
using (var stream = part.GetStream())
{
byte[] data = new byte[stream.Length];
stream.Read(data, 0, (int)stream.Length);
stream.Close();
string customPropertyInfo = System.Text.Encoding.Unicode.GetString(data);
}
}
}
}
如果您知道customProperty1.bin文件的名称/位置,则可以使用GetPart()而不是GetParts()来访问它:
var u = new Uri("/xl/customProperty1.bin", UriKind.Relative);
var part = p.Package.GetPart(u);
请注意,您需要添加对WindowsBase.dll的引用(在“添加引用”中的.NET选项卡下),才能使用“打包”相关方法。
关于c# - Worksheet.CustomProperites OpenXML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11168663/