簡體   English   中英

在Open XML SDK 2.7 C#中將Open XML轉換為SpreadsheetML

[英]Converting Open XML to SpreadsheetML in Open XML SDK 2.7 C#

我有一張excel工作簿,在Sheet 1中有一張小桌子,像這樣:

在此處輸入圖片說明

如果我通過7zip或其他方式打開原始XML,則工作表數據的Open XML輸出如下所示:

   <sheetData>
    <row r="1" spans="1:5" x14ac:dyDescent="0.3">
        <c r="A1" t="s">
            <v>0</v>
        </c>
        <c r="B1" t="s">
            <v>1</v>
        </c>
        <c r="C1" t="s">
            <v>2</v>
        </c>
        <c r="D1" t="s">
            <v>3</v>
        </c>
        <c r="E1" t="s">
            <v>4</v>
        </c>
    </row>

現在,放下音叉一秒鍾。 我知道除了工作表數據以外,還有其他一些涉及格式和布局的文件。 我一直在使用Open XML SDK今天,並且可以訪問人類可讀的單個單元格值,等等。

我想做的是找到一種“簡單”的方法,將OpenXML工作表數據轉換為類似於將文件另存為2003電子表格XML時所得到的東西:

    <Worksheet ss:Name="Sheet1">
    <Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="5" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="14.4">
        <Column ss:Width="44.400000000000006"/>
        <Column ss:Width="55.800000000000004"/>
        <Column ss:Width="80.400000000000006"/>
        <Column ss:Width="58.2" ss:Span="5"/>
        <Row>
            <Cell>
                <Data ss:Type="String">Name</Data>
            </Cell>
            <Cell>
                <Data ss:Type="String">Birthday</Data>
            </Cell>
            <Cell>
                <Data ss:Type="String">Favorite Color</Data>
            </Cell>
            <Cell>
                <Data ss:Type="String">Pet Name</Data>
            </Cell>
            <Cell>
                <Data ss:Type="String">Car</Data>
            </Cell>
        </Row>
        <Row>
            <Cell>
                <Data ss:Type="String">Joe</Data>
            </Cell>
            <Cell ss:StyleID="s16">
                <Data ss:Type="DateTime">2017-01-01T00:00:00.000</Data>
            </Cell>
            <Cell>
                <Data ss:Type="String">blue</Data>
            </Cell>
            <Cell>
                <Data ss:Type="String">Bo</Data>
            </Cell>
            <Cell>
                <Data ss:Type="String">Ferrari</Data>
            </Cell>
        </Row>

關於進行此轉換有什么建議嗎? 有沒有一種方法可以創建從一個移動到另一個的映射表? 我會在嘗試手動移動所有OpenXML文件並手動構建所需的XML輸出時遇到麻煩嗎? 后者是我真正想要避免的。

謝謝

您可以使用EasyXLS庫。 首先閱讀xlsx文件,然后將其轉換為SpreadSheetML。

ExcelDocument workbook = new ExcelDocument();
workbook.easy_LoadXLSXFile("Excel.xlsx");
workbook.easy_WriteXMLFile("SpreadsheetML.xml");

使用OpenXML,您必須逐個單元地進行操作。 EasyXLS支持兩種文件格式。

以后編輯:這也將幫助您:
將Excel轉換為SpreadSheetML

嘗試僅將.xlsx文件重命名為.zip。 如果該xml格式不適合,則其他回復中的庫可能會。

編輯:忽略轉換警告錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM