首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Worksheet.CustomProperites OpenXML

Worksheet.CustomProperites OpenXML
EN

Stack Overflow用户
提问于 2012-06-23 18:10:51
回答 1查看 1.9K关注 0票数 2

我需要读一下Worksheet.CustomProperies。有什么方法可以读取这个属性吗?

我还尝试使用以下命令获取工作簿和工作表的XmlDocument

代码语言:javascript
复制
 XmlDocument xlDoc =  ws.WorksheetXml;

给了我:

代码语言:javascript
复制
<?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的值。当我转到xlsx文件(压缩CustomProperty并解压缩内容)时,值就在那里。

我已经上传了文档here

EN

回答 1

Stack Overflow用户

发布于 2012-06-26 06:56:36

我不熟悉这些自定义属性,但这里有一种方法可以使用最新版本的EPPlus从示例文档中提取customProperty1.bin文件的内容:

代码语言:javascript
复制
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()来访问它:

代码语言:javascript
复制
var u = new Uri("/xl/customProperty1.bin", UriKind.Relative);
var part = p.Package.GetPart(u);            

注您需要添加对WindowsBase.dll的引用(在add reference中的.NET选项卡下)才能使用与打包相关的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11168663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档