![](/img/trans.png)
[英]Problem Reading Excel File Having Single Quote in Sheet Name using OLEDB c#
[英]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.