如何在asp.net中使用DocumentFormat.OpenXml将XML文件转换为xls?

时间:2014-01-25 11:01:25

标签: c# asp.net

如何使用asp.net中的DocumentFormat.OpenXml将XML文件转换为xls?

  • 从fileupload打开xml文件,然后转换为.xls。
  • 即使是巨大的xml文件,转换速度也非常快。
  • 无需使用Interop.Excel.Don't提供链接,请用c#代码解释。

1 个答案:

答案 0 :(得分:0)

你问它是一种关于使用OpenXMLSdk的教程,我觉得它有点偏离主题; - )。

无论如何,这个例子从头开始创建一个xlsx文件。不要忘记下载Xml sdk生产力工具。

考虑这个xml,但即使是更大更复杂的东西也应该工作:

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="TestTable" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="TestTable">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="pk" type="xs:long" minOccurs="0" />
                <xs:element name="Name" type="xs:string" minOccurs="0" />
                <xs:element name="Surname" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <TestTable>
    <pk>1</pk>
    <Name>Name1</Name>
    <Surname>Surname1</Surname>
  </TestTable>
  <TestTable>
    <pk>2</pk>
    <Name>Name2</Name>
    <Surname>Surname2</Surname>
  </TestTable>
  <TestTable>
    <pk>3</pk>
    <Name>Name3</Name>
    <Surname>Surname3</Surname>
  </TestTable>
  <TestTable>
    <pk>4</pk>
    <Name>Name4</Name>
    <Surname>Surname4</Surname>
  </TestTable>
  <TestTable>
    <pk>5</pk>
    <Name>Name5</Name>
    <Surname>Surname5</Surname>
  </TestTable>
  <TestTable>
    <pk>6</pk>
    <Name>Name6</Name>
    <Surname>Surname6</Surname>
  </TestTable>
</NewDataSet> 

现在你只需要打电话:

        DataTable dt = new DataTable("TestTable");
        dt.ReadXml("c:\\test.xml");

        ExcelNameSpace.ExcelFile xlsxFile = new ExcelNameSpace.ExcelFile(dt);
        xlsxFile.CreatePackage("c:\\myFile.xlsx");

ExcelNameSpace.ExcelFile类中的代码为90%,它在几秒钟内被生产力工具反映出来。您应该能够逐步调试并了解您的需求。这是大约1000行所以我不能在这里发布。 (http://www.devnmore.com/share/ExcelFromScratch.txt

希望它有所帮助。

弗朗西斯