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 );
xmlns="..." の属性を使用してルート ノードを作成しようとすると、実行時に「名前空間名が無効です」というメッセージが表示されて失敗します。
データ ノードでは、 のようなノードを取得する代わりに を取得します
<Data ss:Type="Number">
が<Data d6p1:ss="String" xmlns:d6p1="Type">
、これはよくわかりません。私も試しました:dataForQuestionNumber.SetAttribute( "ss", "Type", "Number" );
しかし、うまくいかないようです。