C# 我应该通过OleDb Jet4.0读取excel文件并保存到数据集中吗?
我必须读取excel文件并将其放入数据集中 我应该通过OleDbDataAdapter读取excel文件内容,然后填写到数据集中吗? 我试过了,但失败了。它说,当数据适配器使用填充方法时,应用程序无法识别数据库格式C# 我应该通过OleDb Jet4.0读取excel文件并保存到数据集中吗?,c#,excel,oledb,C#,Excel,Oledb,我必须读取excel文件并将其放入数据集中 我应该通过OleDbDataAdapter读取excel文件内容,然后填写到数据集中吗? 我试过了,但失败了。它说,当数据适配器使用填充方法时,应用程序无法识别数据库格式 代码: 这是否意味着无法直接读取excel数据并将其放入新数据集? 唯一的方法是逐个单元格读取excel数据,并使用datatable插入到新的数据集 提前谢谢 ========================================================== 已解
代码: 这是否意味着无法直接读取excel数据并将其放入新数据集? 唯一的方法是逐个单元格读取excel数据,并使用datatable插入到新的数据集 提前谢谢 ==========================================================
已解决
==========================================================
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读取Excel文件。许多陷阱 对于xls文件,这种方法工作得更好、更可靠 对于xlsx文件,请使用Office Open XML SDK:
您应该避免使用OleDb读取Excel文件。许多陷阱 对于xls文件,这种方法工作得更好、更可靠 对于xlsx文件,请使用Office Open XML SDK:
一旦您拥有正确的连接字符串并意识到数据类型的问题,OLEDB就可以很好地工作。Jet适用于2007年之前的版本,您需要为Excel添加扩展属性
String strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ xlsPath + "Extended Properties='Excel 12.0 Xml;HDR=YES';";
见:
(包含有用的注释)
一旦您拥有正确的连接字符串并意识到数据类型的问题,OLEDB就可以很好地工作。Jet适用于2007年之前的版本,您需要为Excel添加扩展属性
String strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ xlsPath + "Extended Properties='Excel 12.0 Xml;HDR=YES';";
见:
(包含有用的注释)
通过OleDB读取Excel文件时,请确保提供程序的版本正确(一个用于xls,一个用于xlsx),并确保选择了x86作为平台 否则,它将在64位系统上编译为x64,并且由于OleDb已被弃用,因此没有64位OleDb驱动程序,这意味着您的程序将在调用OleDb时崩溃 此外,还必须安装Office 2007系统驱动程序(ACE数据连接组件) 请参见此处:
您也可以使用ODBC或Excel Package Plus。
同样,如果格式是xls而不是xlsx,则需要在此处使用不同的库 用于XLS的Excel库
Excel Package Plus for XLSX
通过OleDB读取Excel文件时,请确保提供程序的版本正确(一个用于xls,一个用于xlsx),并确保选择了x86作为平台 否则,它将在64位系统上编译为x64,并且由于OleDb已被弃用,因此没有64位OleDb驱动程序,这意味着您的程序将在调用OleDb时崩溃 此外,还必须安装Office 2007系统驱动程序(ACE数据连接组件) 请参见此处:
您也可以使用ODBC或Excel Package Plus。
同样,如果格式是xls而不是xlsx,则需要在此处使用不同的库 用于XLS的Excel库
Excel Package Plus for XLSX
真的吗?我对OleDb很陌生。谢谢你的建议,让我试试这个excelReader@heefan,我用xlsx文件的更好选项更新了我的答案。真的吗?我对OleDb很陌生。谢谢你的建议,让我试试这个excelReader@heefan,我用xlsx文件的更好选项更新了我的答案。是的,对。几分钟前,我已经添加了解析方法。谢谢。是的,对。几分钟前,我已经添加了解析方法。谢谢