C#窗体应用程序将excel文件(xlsx类)导入DataGridView
这是一个菜鸡大学生在研究项目内容时为了防止忘记而记录的过程
二话不说先上代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel文件|*.xlsx|所有文件|*.*";
ofd.Title = "打开文件夹";
string b="";
ofd.InitialDirectory = "e:\\";
ofd.FilterIndex = 1;
if (ofd.ShowDialog() == DialogResult.OK) //如果点击的是打开文件
{
this.textBox3.Text = ofd.FileName; //获取全路径文件名
b = this.textBox3.Text;
}
string tablename = gete(b);
string TSql = "SELECT*FROM[" + tablename + "]";
DataTable table = etds(b,TSql).Tables[0];
dataGridView1.DataSource = table;
//将DataSet类对象table中存储的excel中的值放入
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public static string gete(string path)
{
string tablename = null;
if (File.Exists(path))
{
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ path + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'"))
{
conn.Open();
tablename = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0][2].ToString().Trim();
}
}
return tablename;
}
public static DataSet etds(string filename,string tsql)
{
DataSet ds;
string strcon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ filename + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
OleDbConnection myConn = new OleDbConnection(strcon);
string strcom = tsql;
myConn.Open();
OleDbDataAdapter mycommand = new OleDbDataAdapter(strcom, myConn);
ds = new DataSet();
mycommand.Fill(ds);
//使用OleDbDataAdapter对象mycommand将查询结果填充到DataTable对象ds中
myConn.Close();
return ds;
}
}
本次要记录的主要是"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties= ‘Excel 12.0; HDR=Yes; IMEX=1;’ "
我使用的是VS2017,可能是我电脑的原因,只能运行“Provider=Microsoft.Jet.OLEDB.4.0”,然而这个版本只能导入excel(97-03,类型xls)以及excel(03-07,类型xlsx)两种,不能导入最新版。
要使"Provider=Microsoft.ACE.OLEDB.12.0;"能成功运行该怎么办呢?其实很简单,只要下载一个叫做AccessDatabaseEngine的软件就可以了。
网上的AccessDatabaseEngine不知道出于版本太旧还是什么原因,就算下载了还是没有用处,我找了很久才找到了网上有大佬提供的下载源,下载了这个软件安装之后,再导入就能够成功啦。
下面这个是网上大佬提供的AccessDatabaseEngine下载程序。
链接:https://pan.baidu.com/s/1QTOQXgTnmNvJKqPMt0eQ0g
提取码:80v8
如果这篇文章有什么错误欢迎来纠正哦,以上就是本文所有内容。