私は Excel Interop への最初の進出であり、フライングスタートの後、壁にぶつかりました。
評価フォームである 1 つのシートと、評価の実行方法に関するガイダンス ノートを含む別のシートを含む Excel テンプレートがあります。
評価対象のプロジェクトの詳細が記載された XML ファイルもあります。
プロジェクトのタイトル、アプリケーション番号、および会社名を最初のシートにマージし、[アプリケーション番号] - [プロジェクトのタイトル].xlsx というファイル名でシートを保存する必要があります。
最初の部分は正常に動作しています。私は XML をロードしましたが、コードはデータを本来あるべきフォームに入れています。
私の問題は保存部分です。.SaveAs メソッドを見つけたところ、いくつかのファイルが作成されましたが、それらは開きません。次に、HRESULT エラー 0x800A03EC が表示されます - Web を検索しても、これについては何も説明されていません。this.SaveAs() がワークブックではなくワークシートを参照していると何かが言っていますが、私はそこを推測しています。
私は愚かなことをしたことを願っています。それは簡単な修正です。
参考までに、ここに私のコードを示しますが、私が言うように、それがどれほど役立つかはわかりません。
private void MergeData()
{
doc.Load(@"C:\XML Data\source.xml");
XmlNodeList forms = doc.SelectNodes("//form1");
for (int i = 0; i < forms.Count; i++)
{
XmlNodeList nodes = forms[i].ChildNodes;
string refNo = nodes[0].InnerText.ToString();
string companyName = nodes[3].InnerText.ToString();
string title = nodes[1].InnerText.ToString();
this.Cells[9, 4] = title;
this.Cells[11, 4] = refNo;
this.Cells[14, 4] = companyName;
this.SaveAs(@"C:\Assessment Forms\" + refNo + " - " + title + ".xlsx");
}
}
これらのファイルを保存する方法を知っている人はいますか?
読んでくれてありがとう
編集 -
この記事を見つけました
C# と Excel の相互運用の問題、Excel ファイルの保存がスムーズでない
その提案を含むようにコードを変更しました
Excel.Application app = this.Application;
Excel.Workbook wb = app.Workbooks.Add(missing);
wb.SaveAs(@"C:\Assessment Forms\" + refNo + " - " + title + ".xlsx");
しかし、それは同じことをしています。
期限が迫っているので、手動でコピー、貼り付け、保存を開始する必要があると思います:(