我第一次涉足 Excel 互操作,但在飞速发展之后却碰壁了。
我有一个 Excel 模板,其中一张是评估表,另一张包含如何进行评估的指导说明。
我还有一个 XML 文件,其中包含正在评估的项目的详细信息。
我需要将项目名称、申请编号和公司名称合并到第一张表中,然后使用文件名 [Application No] - [Project Title].xlsx 保存该表。
第一部分工作正常。我已经加载了 XML,代码正在将数据放入应有的形式中。
我的问题是储蓄部分。我找到了 .SaveAs 方法,它创建了几个文件......但它们不会打开。然后我得到一个 HRESULT 错误 0x800A03EC - 搜索网络对此没有任何解释。有些东西告诉我 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");
但它也在做同样的事情。
我到了最后期限,所以我想我将不得不手动开始复制、粘贴和保存:(