我是否应该通过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 Jet4.0读取一个excel文件并保存到数据集中?

一旦您有了正确的连接字符串并意识到数据类型的问题,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