簡體   English   中英

沒有工作表名稱的C#Excel到OleDB

[英]C# Excel to OleDB without sheet name

我正在嘗試將Excel數據添加到數據庫。 我可以使用工作表名稱執行此操作,但是它限制了用戶使用應用程序,因此我希望該用戶可以使用任何工作表名稱上傳Excel文件。

這是我的代碼:

public static DataSet ReadExcelFile(string sheetName, string path)
{
    using (OleDbConnection conn = new OleDbConnection())
    {
        DataSet ds = new DataSet();
        string Import_FileName = path;
        string fileExtension = Path.GetExtension(Import_FileName);

        if (fileExtension == ".xls")
           conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 8.0;HDR=YES;'";

        if (fileExtension == ".xlsx")
           conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;'";

        using (OleDbCommand comm = new OleDbCommand())
        {
             comm.CommandText = "Select * from [" + sheetName + "$]";
             comm.Connection = conn;

             using (OleDbDataAdapter da = new OleDbDataAdapter())
             {
                 da.SelectCommand = comm;
                 da.Fill(ds, "Table");
                 return ds;
             }
         }
     }
 }

如何使用任何工作表名稱將Excel數據加載到數據庫中?

提前致謝

在我的情況下,請使用Microsoft.Office.Interop.Excel命名空間首先從Excel文件讀取工作表名稱。

Excel.Application MyApp = new Excel.Application();
MyApp.Visible = false;

Excel.Workbooks MyBooks = MyApp.Workbooks;
Excel.Workbook MyBook = MyBooks.Open(excelFilePath);
Excel.Worksheet XlsDb = MyBook.Sheets[1] as Excel.Worksheet;

string sheetName = XlsDb.Name;
DataSet excelDataSet = ReadExcelFile(sheetname, path);

獲得工作表名稱后,別忘了關閉通過上面的代碼打開的Excel(如果不關閉它們,它們將在taskmanager中具有Excel任務。即使您的程序已經關閉)。

MyBook.Close(0);
MyApp.Quit();
Marshal.ReleaseComObject(XlsDb);
Marshal.ReleaseComObject(MyBook);
Marshal.ReleaseComObject(MyBooks);
Marshal.ReleaseComObject(MyApp);
GC.Collect();
GC.WaitForPendingFinalizers();

暫無
暫無

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

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