2

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を圧縮してコンテンツを抽出)に移動すると、値が表示されます。

ここにドキュメントをアップロードしました

4

1 に答える 1

1

私はこれらのカスタム プロパティに詳しくありませんが、EPPlus の最新バージョンを使用して、サンプル ドキュメントから customProperty1.bin ファイルの内容を抽出する 1 つの方法を次に示します。

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 ファイルの名前/場所がわかっている場合は、GetParts() の代わりに GetPart() を使用してアクセスできます。

var u = new Uri("/xl/customProperty1.bin", UriKind.Relative);
var part = p.Package.GetPart(u);            

パッケージング関連のメソッドを使用するには、WindowsBase.dll への参照を追加する必要があることに注意してください ([参照の追加] の [.NET] タブの下)。

于 2012-06-25T22:56:35.973 に答える