2011-04-12 65 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

相關問題