簡體   English   中英

C#-在不知道工作表名稱的情況下導入Excel文件

[英]C# - Importing Excel file without knowing the sheet name

我正在嘗試導入Excel文件,而這樣做的邏輯是正確的:

private void SaveFileToDB(UploadedFile uploadedFile)
{
        string path = Server.MapPath("uploads/" + uploadedFile.FileName);


        int currentContractId = Convert.ToInt32(Session["id"]);

        string connnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
        OleDbConnection con = new OleDbConnection(connnection);
        OleDbCommand command = new OleDbCommand();

        DataTable dt = new DataTable();
        OleDbDataAdapter myCommand = new OleDbDataAdapter(**"select * from [Sheet1$]"**, con);

        myCommand.Fill(dt);
        int count = 0;
        //some code...

}

如您所見,我正在命令中對Excel工作表的名稱進行硬編碼,並且我想知道如何繼續使其動態。

如果您希望避免使用Interop,而只想使用oledb,則可以使用以下方法獲取工作表名稱:

var sheetNames = con.GetSchema("Tables");
foreach (DataRow row in sheetNames.Rows)
{
   var name = row["TABLE_NAME"];
   //select from this sheet
   //do whatever else
}

好吧,一種方法就是只查找所有工作表。

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelBook = xlApp.Workbooks.Open("D:\\Book1.xlsx"); 

String[] excelSheets = new String[excelBook.Worksheets.Count];
    int i = 0;
    foreach(Microsoft.Office.Interop.Excel.Worksheet wSheet in excelBook.Worksheets)    
    {
      excelSheets[i] = wSheet.Name;
      i++;
    }

來源: 工作表順序中的Excel工作表名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM