我第一次涉足Excel Interop并且在飞行开始之后撞墙了。
我有一个Excel模板,其中包含一张评估表,另一张包含有关如何进行评估的指导说明。
我还有一个XML文件,其中包含正在评估的项目的详细信息。
我需要将项目标题,应用程序编号和公司名称合并到第一个工作表中,然后使用文件名[Application No] - [Project Title] .xlsx保存工作表。
第一部分工作正常。我已经加载了XML,代码将数据放入应该存在的形式。
我的问题是保存部分。我找到了.SaveAs方法,它创建了几个文件......但它们无法打开。然后我得到一个HRESULT错误0x800A03EC - 搜索网络没有解释这个。有些东西告诉我,这个.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# and Excel Interop issue, Saving the excel file not smooth
并更改了代码以包含其建议
Excel.Application app = this.Application;
Excel.Workbook wb = app.Workbooks.Add(missing);
wb.SaveAs(@"C:\Assessment Forms\" + refNo + " - " + title + ".xlsx");
但它也在做同样的事情。
我正处于截止日期,所以我认为我将不得不手动开始复制,粘贴和保存:(
答案 0 :(得分:1)
不确定此处有哪个对象this
,但如果您认为this
是工作表是正确的,请尝试this.Parent.SaveAs
如果this
原来是一个范围,请尝试this.Worksheet.Parent.SaveAs