将excel文件的数据写入数据库,什么方法效率最高?
我现在的方法是将excel文件填充到dataset,然后现在怎么将dataset写入到数据库表中呢?
由于excel的每一条数据要分开写入数据库的3个表中,所以我写了一个带参数的存储过程,参数对应excel文件的列。下面是将excel文件填充进dataset的代码:
/// <summary>
/// 返回Excel数据源
/// </summary>
/// <param name="filename">文件路径</param>
/// <returns></returns>
private DataSet ExcelToDataSet(string filePath)
{
DataSet ds = null;
OleDbConnection conn = null; try
{
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Extended Properties=Excel 8.0;" +
"data source=" + filePath;
conn = new OleDbConnection(connStr);
string sqlStr = " SELECT * FROM [Sheet1$]";
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sqlStr, conn);
ds = new DataSet();
da.Fill(ds, "Table_Excel");
}
catch (Exception excpt)
{
ds = null;
}
finally
{
if (conn != null)
{
conn.Close();
conn.Dispose();
}
}
return ds;
}
我现在的方法是将excel文件填充到dataset,然后现在怎么将dataset写入到数据库表中呢?
由于excel的每一条数据要分开写入数据库的3个表中,所以我写了一个带参数的存储过程,参数对应excel文件的列。下面是将excel文件填充进dataset的代码:
/// <summary>
/// 返回Excel数据源
/// </summary>
/// <param name="filename">文件路径</param>
/// <returns></returns>
private DataSet ExcelToDataSet(string filePath)
{
DataSet ds = null;
OleDbConnection conn = null; try
{
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Extended Properties=Excel 8.0;" +
"data source=" + filePath;
conn = new OleDbConnection(connStr);
string sqlStr = " SELECT * FROM [Sheet1$]";
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sqlStr, conn);
ds = new DataSet();
da.Fill(ds, "Table_Excel");
}
catch (Exception excpt)
{
ds = null;
}
finally
{
if (conn != null)
{
conn.Close();
conn.Dispose();
}
}
return ds;
}
我以前做项目最终用的就是这个。up&=高人
那我现在怎么将dataset写入到数据库表中呢?是应该读一行然后写一行吗?
还有一个问题,怎么得到excel文件的所有sheet?网上说:“引用Excel类库:using Microsoft.Office.Interop.Excel类库”,我添加引用找了半天都没有找到。
那我现在怎么将dataset写入到数据库表中呢?是应该读一行然后写一行吗?
还有一个问题,怎么得到excel文件的所有sheet?网上说:“引用Excel类库:using Microsoft.Office.Interop.Excel类库”,我添加引用找了半天都没有找到。
””
安装Office时要选中.NET编程*****忘记叫什么名字了,反正完全安装Office肯定有。
但我认为用OLEDB的方式也不错。
那我现在怎么将dataset写入到数据库表中呢?是应该读一行然后写一行吗? ”
谢谢各位!
还有一个问题,一个excel文件里可能会有多个sheet,怎么样获取这些sheet的名字。
Excel._Workbook xBk = excel.Workbooks.Add(true);
Excel._Worksheet xSt = (Excel._Worksheet)xBk.Sheets[1]
"xSt.Name"就是第一个 sheet的名字