2013-07-05 51 views
1

我寫了下面無法將數據寫入到現有的XLSX文件

  string filePath = @"C:\report_data.xlsx"; 

      // Saves the file via a FileInfo 
      var file = new FileInfo(filePath); 

      // Creates the package and make sure you wrap it in a using statement 
      using (var package = new ExcelPackage(file)) 
      { 
       // Adds a new worksheet to the empty workbook 
       OfficeOpenXml.ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Report System - " + DateTime.Now.ToShortDateString()); 

       // Starts to get data from database 
       for (int row = 1; row < 10; row++) 
       { 
        // Writes data from sql database to excel's columns 
        for (int col = 1; col < 10; col++) 
        {        
         worksheet.Cells[row, col].Value = row * col; 
        }// Ends writing data from sql database to excel's columns 

       }// Ends getting data from database 


       // Saves new workbook and we are done! 
       package.Save(); 
      } 

此代碼時,我打開的文件,它有沒有和頁面是空白的。但是當我看到文件大小時,它增加了。爲什麼在文件大小增加的同時頁面是空白的?我如何向其寫入數據?

備註:當我嘗試刪除現有文件並運行程序時,程序生成了該文件,並且該文件的值顯示在列中。另一方面,我試着創建文件,然後運行程序,結果是空白,就像我上面說的。

+1

請不要在標題中加入標籤信息。這裏的標記系統非常擅長對事物進行分類,並且不需要幫助。 :-)請參閱[應該在其標題中是否包含「標籤」?](http://meta.stackexchange.com/q/19190/172661)。謝謝。 –

回答

1

我找到了答案。我只是改變了線在

OfficeOpenXml.ExcelWorksheet worksheet = 
    package.Workbook.Worksheets.Add("Report System - " + 
    DateTime.Now.ToShortDateString()); 

OfficeOpenXml.ExcelWorksheet worksheet = 
    package.Workbook.Worksheets["Sheet1"]; 

和它的工作!。

因爲Sheet1是工作表的默認名稱和它在我的文件在行存在:

string filePath = @"C:\report_data.xlsx"; 

其實,在這種情況下,package.Workbook.Worksheets.Add意味着增加工作表的名稱,我發現它沒有添加工作表的名稱,因爲它已經存在。