4

このフォーラムで同様の質問に関するほとんどのトピックを見てきましたが、探しているものを正確に見つけることができませんでした。

BizTalk 2013 R2C# を使用して受信Excel 2010 .xlsxファイルをベア/ベース XML 表現に単純に変換するためのパイプライン コンポーネントを作成しようとしています。

それに対してテンプレートを実行したり、XLST変換したり、そのようなことはしたくありません。上記のスプレッドシートの基になる XML 表現をそのまま返したいだけです。

これは非常に簡単な作業のように思えますが、その方法がまったくわかりません。

私が見つけたものはすべてDataTables、( 経由でOpenXML) 行とセルを操作してループし、より人間が読める特定の XML 表現を出力する必要がありますが、それは私が望んでいるものではありません。

そのスプレッドシートの実際の Microsoft XML 表現が必要です。

どんな助けでも大歓迎です。

4

1 に答える 1

2

OK、ファイルを解凍しなくてもわかりました。

SAX アプローチを使用してワークシートをOpenXmlReaderここにある にロードする場合:

https://msdn.microsoft.com/en-us/library/office/gg575571(v=office.15).aspx

次に、リーダーを使用して次のOuterXmlようなものを取得できます。

using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(filepath, false))
{
    WorkbookPart wbPart = spreadSheetDocument.WorkbookPart;

    OpenXmlReader reader = OpenXmlReader.Create(wbPart);

    while (reader.Read())
    {
        if (reader.ElementType == typeof(Sheet))
        {
            Sheet sheet = (Sheet)reader.LoadCurrentElement();

            WorksheetPart wsPart = (WorksheetPart)(wbPart.GetPartById(sheet.Id));

            OpenXmlReader wsReader = OpenXmlReader.Create(wsPart);
            while (wsReader.Read())
            {
                if(wsReader.ElementType == typeof(Worksheet))
                {
                    Worksheet wsPartXml = (Worksheet)wsReader.LoadCurrentElement();
                    Console.WriteLine(wsPartXml.OuterXml + "\n");
                }
            }
        }
    }
    Console.ReadKey();
}
于 2015-02-02T18:35:29.897 に答える