xsdをdocxへ その1
http://blogs.wankuma.com/tyato/archive/2007/08/27/92159.aspx
支離滅裂な文章が踊っているので要約すると、
・XSDからパラメータ関連の仕様書をdocxに自動で出力したい
っていうことになるみたいですハイ。
まずはxsdをどーにかして読み込みたい。しかし、XSDって定義やん!どないすんねん?などと思っていると、こんなコード発見。
const string schemaPath = @"C:\\test.xsd";
const string documentPath = @"C:\\test.xml";
System.IO.StreamReader xmlStream = new System.IO.StreamReader(schemaPath);
DataSet dataSet1= new DataSet();
dataSet1.ReadXmlSchema(xmlStream);
xmlStream.Close();
dataSet1.ReadXml(documentPath, XmlReadMode.InferSchema);
foreach (DataColumn col in dataSet1.Tables["item"].Columns)
{
Console.WriteLine("-"+col.ColumnName+":"+col.DataType);
}
あ、なるほど。スキーマとして読み込んで、定義部分を引っ張り出すことができるわけですな。
まぁ整形はおいといて、あとはdocxが自分で作り出せればOK
するとマイクロソフト様がこんなん公開してた
Office XML ファイル形式と 3.0 .NET Framework からのパッケージ コンポーネントを使用する単純な Excel 2007 ブックまたは単純な Word 2007 ドキュメントを作成する方法
http://support.microsoft.com/kb/931866/ja
ビンゴ!これですこれ。んでできあがったのはこんな感じ
private void btn_readxsd_Click(object sender, EventArgs e)
{
const string schemaPath = @"C:\\test.xsd";
const string documentPath = @"C:\\test.xml";
System.IO.StreamReader xmlStream = new System.IO.StreamReader(schemaPath);
dataSet1.ReadXmlSchema(xmlStream);
xmlStream.Close();
dataSet1.ReadXml(documentPath, XmlReadMode.InferSchema);
String worddata = "";
foreach (DataColumn col in dataSet1.Tables["item"].Columns)
{
worddata += "カラム名称:" + col.ColumnName + "<br>データタイプ:" + col.DataType + "<br>";
}
CreateDocxFile(worddata, "xmlschema.docx");
}
C#さわりはじめてから2ヶ月程度なんでツッコまないで~(@@;
とりあえず XSD読み込み→docx出力 まではいけた
あとは必要な情報と整形の問題なわけですが、事件はリアルタイムに進行中。
文中の<br>は改行できねーかなーと思っていれてみましたが、全く意味がなし
。・゚・(ノД`)・゚・。
つか、パラメータの定義やから、docxでなくて、xlsxの方がいいんじゃね?と思い始めた。。
つづく!(レントン風)
P.S.
FireFoxで最初投稿したらえらいことにっ
IE7で整形しなおしてみますた。ちゃんと見えるかなぁ