2012-08-13 33 views
0

經過一些測試,似乎有幾個問題。C#保存Excel AsCopy

此代碼現在正在複製該文件。在File.Copy操作之後,有代碼應該更新某些單元格,當嘗試更新時,系統會因爲一個錯誤而失敗,建議它找不到該特定單元格A28 。

將代碼還原爲簡單覆蓋原始代碼時,它會找到單元格A28並更新值,而不會出現問題。

任何想法?

守則是站(與覆蓋原始模板):

// Declaration of variables 
ClientName = txtClientName.Text; 

string newFileName = ClientName + ".xls"; 

string Filename = "C:\\Template.xls"; 

//File.Copy(Filename, @"C:\\" + newFileName, true); 


// If you are using xls format (2003), use this connection string. 

string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Filename + ";Extended Properties=\"Excel 8.0;HDR=NO;\""; 

string SQL1 = "UPDATE [Cover Sheet$A28:A28] SET F1='" + ClientName + "'"; 

using (OleDbConnection Connection = new OleDbConnection(ConnectionString)) 
     { 
      Connection.Open(); 
      using (OleDbCommand cmd1 = new OleDbCommand(SQL1, Connection)) 
      { 
       cmd1.ExecuteNonQuery(); 
      } 
     } 
    } 

回答

0

傳遞給你的程序所需的新文件名的名稱,複製的模板和工作的新文件。

public void MapToExcelDocument(string newFileName) 
{ 
    // Declaration of variables 
    string templateName = "C:\\Template.xls"; 
    File.Copy(templateName, newFileName, true); 

    // If you are using xls format (2003), use this connection string.    
    string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
           newFileName + ";Extended Properties=\"Excel 8.0;HDR=NO;\""; 

.... 

這種變化(呼叫File.Copy)要求該行的源代碼文件的開頭加入:

using System.IO; 

這句簡單的話告訴編譯器所使用的對象,類,System.IO名稱空間中的枚舉和接口。沒有線,你應該每天前綴像類文件,它的完全限定的命名空間

System.IO.FileCopy(templateName, newFileName, true); 

不是很打字,你可以看到方便。

編輯:按照下面的評論我會添加另一個提示。
如果傳遞一個沒有路徑的簡單文件名,File.Copy將在當前工作目錄中創建新文件。當前工作目錄當您在Visual Studio中工作時是bin/debugbim/release。在部署應用程序時,當前工作目錄將成爲應用程序啓動的目錄。

你有一些選擇:

  • 傳遞一個完全合格的文件名到任意目錄(即 「C:\ MYFILES \ destinationFile.xls」)。
  • 定義的路徑您的配置文件中,該路徑添加到 文件名中傳遞。
  • 在你的配置文件中定義的相對路徑和相對一個 目錄寫入一個衆所周知的路徑(如我的文檔)
+0

感謝您的建議,但編譯器不喜歡'文件':名稱文件在當前上下文中不存在。 – user1594770 2012-08-13 10:02:40

+0

在源代碼的開頭添加'using System.IO;'。 – Steve 2012-08-13 10:04:52

+0

添加了上面的行。沒有編譯器問題,但是新文件沒有被創建。 – user1594770 2012-08-13 10:24:16