我是否应该通过OleDb Jet4.0读取一个excel文件并保存到数据集中?
本文关键字:文件 excel 一个 保存 集中 数据集 数据 是否 OleDb 读取 Jet4 | 更新日期: 2023-09-27 18:06:29
我必须读取excel文件并放入数据集。
我应该通过OleDbDataAdapter读取excel文件内容,然后填充到数据集吗?我试过了,但失败了。当数据适配器执行Fill方法时,应用程序无法识别数据库格式。
String queryAll = "SELECT * FROM [Sheet1$]";
String xlsPath = Directory.GetCurrentDirectory() + "''paid.xls";
String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsPath;
try
{
m_dbDA = new OleDbDataAdapter(queryAll, strConn);
DataSet dsPaidXls = new DataSet();
m_dbDA.Fill(dsPaidXls); //exception here
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
这是否意味着没有办法直接读取excel数据并放入新的数据集?唯一的一种方法是读取excel数据单元格和插入到一个新的数据集与数据表?
提前感谢。
========================================
解决========================================
String queryAll = "SELECT * FROM [Sheet1$]";
String xlsPath = Directory.GetCurrentDirectory() + "''paid.xls";
String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsPath +
";Extended Properties='Excel 8.0;IMEX=1';";
try
{
m_dbDA = new OleDbDataAdapter(queryAll, strConn);
DataSet dsPaidXls = new DataSet();
m_dbDA.Fill(dsPaidXls,"[Sheet1$]");
dataGridView1.DataSource = dsPaidXls;
dataGridView1.DataMember = "[Sheet1$]";
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
一旦您有了正确的连接字符串并意识到数据类型的问题,OLEDB就可以很好地工作。Jet适用于2007年之前的版本,您需要为Excel添加扩展属性。
String strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ xlsPath + "Extended Properties='Excel 12.0 Xml;HDR=YES';";
看:连接字符串
如何在Visual Basic或VBA中使用ADO处理Excel数据(包含有用的注释)
各种笔记
当你通过OleDB读取Excel文件时,确保你有正确的提供程序版本(一个用于xls,一个用于xlsx),并且还确保你选择了x86作为平台。
如果您不这样做,它将在64位系统上编译为x64,并且由于OleDb已弃用,没有64位OleDb驱动程序,这意味着您的程序将在调用OleDb时崩溃。
还必须安装Office 2007系统驱动程序(ACE Data Connectivity Components)。
请看这里:
查询Excel 2010时诊断OLEDB异常
您也可以使用ODBC或Excel Package Plus。
同样,如果格式是xls而不是xlsx,则需要使用不同的库。
ExcelLibrary for XLS
http://code.google.com/p/excellibrary/
Excel Package Plus for XLSX
http://epplus.codeplex.com/
您应该避免使用OleDb读取Excel文件。许多pitfals。
对于xls文件,这工作得更好,更可靠。
http://www.codeproject.com/KB/office/ExcelReader.aspx 对于xlsx文件,使用Office Open XML SDK:http://www.microsoft.com/download/en/details.aspx?displaylang=en& id = 5124