在Open XML SDK 2.7中将Open XML转换为SpreadsheetML C#

我有一个Excel工作簿,在Sheet 1中有一个小表格,如下所示:

在这里输入图像说明

如果我通过7zip或其他东西打开原始XML,则工作表数据的Open XML输出如下所示:

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

现在,放下一点叉子。 我知道除了涉及格式和布局的工作表数据外,还有其他几个相关的文件。 我一直在使用Open XML SDK Today,可以访问个人可读的单元格值等。

我想要做的是find一个“简单”的方法来将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> 

有关进行此转换的任何build议? 有没有办法创build一个映射表从一个移动到另一个? 我会被卡住试图手动移动所有的OpenXML文件,并手动build立所需的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格式不适合,那么在其他答复的库可能。

编辑:忽略转换警告错误。