我正在尝试将Excel数据添加到数据库中。我可以使用工作表名称来完成它,但它限制用户使用app,所以我希望该用户可以使用任何工作表名称上传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数据加载到数据库中?
提前致谢
答案 0 :(得分:0)
在我的情况下,首先使用Microsoft.Office.Interop.Excel命名空间从Excel文件中读取sheetname。
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(如果您不这样做,您可以看到他们将在任务管理员中执行Excel任务关闭它。甚至你的程序已经关闭了。)
MyBook.Close(0);
MyApp.Quit();
Marshal.ReleaseComObject(XlsDb);
Marshal.ReleaseComObject(MyBook);
Marshal.ReleaseComObject(MyBooks);
Marshal.ReleaseComObject(MyApp);
GC.Collect();
GC.WaitForPendingFinalizers();