C#将EXCEL显示到datagridview时遇到”找不到可安装的ISAM”故障
大家好,最近我在用C#将EXCEL显示到datagridview时遇到找不到可安装的ISAM故障,按照网上的解决方法将'Excel 12.0;HDR=YES;IMEX=1'两边加上单引号,运行程序故障依旧;后来在“运行”对话框中:Regsvr32 C:\Windows\SysWOW64\msexcl40.dll ,显示DllRegisterServer在C:\Windows\SysWOW64\msexcl40.dll已成功,然后运行程序故障依旧。我看网上基本就是这2种方法,现在请教大家看看我的程序哪有问题。谢谢EXCEL的版本不同,在Extended Properties='Excel 12.0;HDR=YES;IMEX=1'语句中要不要修改EXCEL后面的版本号?我的电脑装的是WPS OFFICE的WPS校园版,这是是不是不行,要装microsoft office才行?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataTable dt = new DataTable();
private void btnSure_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();//首先根据打开文件对话框,选择excel表格
fd.Filter = "表格|*.xlsx;*.xls";//打开文件对话框筛选器
string strPath;//文件完整的路径名
if (fd.ShowDialog() == DialogResult.OK)
{
try
{
strPath = fd.FileName;
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';";//不能是11.0
OleDbConnection Con = new OleDbConnection(strCon);//建立连接
string strSql = "select * from [Sheet1$]";//表名的写法也应注意不同,对应的excel表为sheet1,在这里要在其后加美元符号$,并用中括号
OleDbCommand Cmd = new OleDbCommand(strSql, Con);//建立要执行的命令
OleDbDataAdapter da = new OleDbDataAdapter(Cmd);//建立数据适配器
DataSet ds = new DataSet();//新建数据集
da.Fill(ds);//把数据适配器中的数据读到数据集中的一个表中(此处表名为shyman,可以任取表名)
//指定datagridview1的数据源为数据集ds的第一张表(也就是shyman表),也可以写ds.Table["shyman"]
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);//捕捉异常
}
}
}
private void btnQuit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}