.net 使用OLEDB访问excel
基本步骤
- 安装相关的dll,到Microsoft上下载,具体网址为:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255
注:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序,如果出现这个错误,可能是没有安装好这个驱动 如果服务器是64位,则选择X64,我选择的是X64,之后再在vs2019中进行配置管理器修改,之前是AnyCPU,改成x64,这样基本配置就完成了 - 连接excel文件数据库
Excel 97-2003的连接字符串
Provider=Microsoft.Jet.OLEDB.4.0;
Data Sourcec:\myFolder\myOldExcelFile.xls; Extended Properties='Excel 8.0;HDR=YES;'
Excel 2007-2013的连接字符串
String sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + FileName + ";"+
"Extended Properties='Excel 12.0 Xml;HDR=YES'";
- 之后按照数据库类似的连接方式就可以了。
注意:表的名称不是Sheet1 ,而是[Sheet1$]
public DataSet ReadExcel()
{
ole_conn = new OleDbConnection(sConnectionString);
DataSet dataset = new DataSet();
ole_conn.Open();
using (OleDbCommand ole_cmd = ole_conn.CreateCommand())
{
ole_cmd.CommandText = "select * from [Sheet1$]";
OleDbDataAdapter adapter = new OleDbDataAdapter(ole_cmd);
adapter.Fill(dataset);
}
return dataset;
}
- 读取excel文件
private void button1_Click(object sender, EventArgs e)
{
try
{
DataSet dataset = new DataSet();
dataset = ReadExcel();
dataGridView1.DataSource = dataset.Tables[0];
dataGridView1.Columns[0].HeaderText = "任务编号";
dataGridView1.Columns[1].HeaderText = "维度";
dataGridView1.Columns[2].HeaderText = "经度";
dataGridView1.ReadOnly = false;
}
catch (Exception ex)
{
MessageBox.Show("查询错误!" + ex.Message);
}
finally
{
if (ole_conn != null)
{
ole_conn.Close();
}
}
}
- 修改excel文件
基本上和上面连接数据库相同,只要把sql语句改一下就好
string sql = "update [Sheet1$] set 维度='{0}',经度='{1}' where 任务编号='{2}'";
sql = string.Format(sql, textBox2.Text, textBox3.Text,textBox1.Text);
ole_cmd.CommandText = sql;
ole_cmd.ExecuteNonQuery();
|