用C#编写Excel 2003

时间:2012-05-31 16:57:55

标签: c# xml excel

我正在尝试编写一个2003 XML Excel文件,但也许我遗漏了一些大的东西,或者......我根本就不理解命名空间。

我需要写这个:

<?xml version="1.0" encoding="utf-8"?>
<Workbook
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">

<Worksheet Name="Questions">
<Table><Row><Cell><Data ss:Type="Number">1</Data></Cell></row></table>
</Worksheet>

我正在使用这样的代码:

    var toret = new XmlDocument();

    // Add encoding declaration
    XmlDeclaration xmlDeclaration = toret.CreateXmlDeclaration( "1.0", "utf-8", null);
    toret.AppendChild( xmlDeclaration );

    // Add root label
    var root = toret.CreateElement( ExcelXmlLblWorkbook );
    toret.AppendChild( root );
//  root.SetAttribute( "xmlns", "urn:schemas-microsoft-com:office:spreadsheet" );
    root.SetAttribute( "xmlns:o", "urn:schemas-microsoft-com:office:office" );
    root.SetAttribute( "xmlns:x", "urn:schemas-microsoft-com:office:excel" );
    root.SetAttribute( "xmlns:ss", "urn:schemas-microsoft-com:office:spreadsheet" );
    root.SetAttribute( "xmlns:html", "http://www.w3.org/TR/REC-html40" );

    // ...
    var cellForQuestionNumber = wsQuestions.OwnerDocument.CreateElement( ExcelXmlLblCell );
    row.AppendChild( cellForQuestionNumber );

    var dataForQuestionNumber = wsQuestions.OwnerDocument.CreateElement( ExcelXmlLblData );
    dataForQuestionNumber.SetAttribute( "ss:Type", "Number" );
    dataForQuestionNumber.InnerText = "1";
    cellForQuestionNumber.AppendChild( dataForQuestionNumber );
  1. 如果我尝试使用xmlns =“...”的属性创建根节点,那么它在运行时会失败,说“命名空间名称无效”。

  2. 在数据节点中,我没有获得<Data ss:Type="Number">这样的节点,而是得到<Data d6p1:ss="String" xmlns:d6p1="Type">,我真的不明白。我也尝试过:

    dataForQuestionNumber.SetAttribute(“ss”,“Type”,“Number”);

  3. 但它似乎不起作用。

0 个答案:

没有答案