2011-04-12 67 views
0

我在第一次进入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"); 

但它是也是这样做的。

我在最后期限这样认为,我将不得不开始复制,粘贴和手动保存:(

回答

1

不知道是什么在这里对象this,但如果你是在假设this正确的工作表,尝试this.Parent.SaveAs

另外,如果this原来是一个范围,尝试this.Worksheet.Parent.SaveAs

+0

感谢。我回去看看吧,你对了,我是在纸张上的编码,而是使用this.Parent的。另存为我将代码放在工作簿和该部分的下面它是固定的。 – Slotty 2011-04-12 12:34:00

相关问题