2011-08-28 51 views
0

我試着說,用戶選擇從uploadcontrol excel文件,並上傳或告訴我文件的完整路徑/目錄,因爲我將解析文件和更新的數據表。上傳Excel和進口數據表

我進口確定年代的代碼在低於,我該如何解決這種情況

項目,asp.net 4.0開發,C#

public DataTable Import(String path){ 

Microsoft.Office.Interop.Excel.ApplicationClass app = new Microsoft.Office.Interop.Excel.ApplicationClass(); 
    Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(path, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 

    Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.ActiveSheet; 

    int index = 0; 
    object rowIndex = 2; 

    DataTable dt = new DataTable(); 
    dt.Columns.Add("FirstName"); 
    dt.Columns.Add("LastName"); 
    dt.Columns.Add("Mobile"); 
    dt.Columns.Add("Landline"); 



    DataRow row; 

    while (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 1]).Value2 != null) 
    { 
     rowIndex = 2 + index; 
     row = dt.NewRow(); 
     row[0] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 1]).Value2); 
     row[1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 2]).Value2); 
     row[2] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 3]).Value2); 
     row[3] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 4]).Value2); 

     index++; 
     dt.Rows.Add(row); 
    } 
    app.Workbooks.Close(); 
    return dt; 
} 
+2

問題是什麼? – svick

+1

不推薦在您的服務器上啓動Excel實例。 – Mathias

回答

0

由於Svick說,你真的不問一個問題,但同時您可能想要調查reading from Excel using ADO.Net,這將允許您通過幾個步驟從Excel工作表創建數據集。或者,也許是第三方組件之一,讀/寫Excel表格是你的東西(Flexcel和Gembox在我心中)。所有這些優點是您不需要在運行應用程序的計算機上安裝Excel。 (請參閱Mathias的評論)。

0

隨着GemBox.Spreadsheet你可以非常輕鬆地完成這個任務。

下面是一個例子Excel C#代碼:

ExcelFile ef = new ExcelFile(); 

ef.LoadXls(path); 

DataTable dt = ef.Worksheets[0].CreateDataTable(ColumnTypeResolution.Auto); 

return dt;