2011-08-28 21 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;