我在第一次进入Excel Interop,并在飞行开始后遇到了困难。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");
}
}
有谁知道如何保存这些文件?
感谢您阅读
EDIT--
我发现这篇文章
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");
但它是也是这样做的。
我在最后期限这样认为,我将不得不开始复制,粘贴和手动保存:(
感谢。我回去看看吧,你对了,我是在纸张上的编码,而是使用this.Parent的。另存为我将代码放在工作簿和该部分的下面它是固定的。 – Slotty 2011-04-12 12:34:00