2017-01-30 57 views
0

我想按照this code來閱讀Excel文件。不幸的是,我無法使它工作,因爲我需要閱讀沒有標題的Excel文件。我怎樣才能讀取沒有標題的Excel文件?閱讀不帶頭文件的Excel文件ASP.Net

public static DataTable ToDataTable(this ExcelPackage package) 
    { 
     ExcelWorksheet workSheet = package.Workbook.Worksheets.First(); 
     DataTable table = new DataTable(); 


     foreach (var firstRowCell in workSheet.Cells[1, 1, 1, workSheet.Dimension.End.Column]) 
     { 
      table.Columns.Add(firstRowCell.Text); 
     } 

     for (var rowNumber = 2; rowNumber <= workSheet.Dimension.End.Row; rowNumber++) 
     { 
      var row = workSheet.Cells[rowNumber, 1, rowNumber, workSheet.Dimension.End.Column]; 
      var newRow = table.NewRow(); 
      foreach (var cell in row) 
      { 
        newRow[cell.Start.Column-1] = cell.Text; 
      } 
      table.Rows.Add(newRow); 
     } 
     return table; 
    } 
+0

也許嘗試這樣一個http://stackoverflow.com/questions/13396604/excel-to-datatable-using-epplus-excel-locked-for-editing用'布爾hasHeader = FALSE;' – Slai

回答

1

您可以在for聲明中表示,環路從第二行開始(跳過頭)看到的,你需要的是從第一行環路(因爲沒有表頭行)是這樣的:

var rowNumber = 1 

如果你的數據在第一行空的,那麼請加入你期望多少列在那裏的文件中:

// Notice I replaced workSheet.Dimension.End.Column with 6, because I am expecting 6 columns. 
foreach (var firstRowCell in workSheet.Cells[1, 1, 1, 6]) 
{ 
    table.Columns.Add(firstRowCell.Text); 
} 
+0

將其更改爲1,但它給了我一個錯誤,說找不到第0列。 – Jujumancer

+0

你能指定你在哪一行得到這個錯誤嗎? –

+0

第30行:newRow [cell.Start.Column - 1] = cell.Text; – Jujumancer

0

我是能夠使周圍的工作與問題。我自動添加列。更改爲foreach到for循環。

for (int x = 0; x <= workSheet.Dimension.End.Column; x++) 
     { 
      table.Columns.Add(x.ToString()); 
     }