永发信息网

C#能不能像操作SQL数据库那样使用sql语句对excel进行读取更新等操作?

答案:6  悬赏:10  手机版
解决时间 2021-03-29 08:11
  • 提问者网友:谁的错
  • 2021-03-28 21:45
C#能不能像操作SQL数据库那样使用sql语句对excel进行读取更新等操作?
最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-03-28 23:14
可以。
 
C#可以使用 oledb,连接并操作excel,可以使用sql,就像操作数据库一样。
 
创建连接字符串,主要参数有:data source,provider,Extended properties,HDR,IMEX等等。
provider是你用来连接execl的驱动版本,
data source就是你要连接的excel文件,
例子:connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + ";Extended Properties="Excel 12.0;HDR=NO;IMEX=1""; 
下一步就可以使用这个连接字符串,创建链接对象
objConn = new OleDbConnection(connStr);
然后就可以打开这个连接对象。
 objConn.Open();
使用sql语句创建cmd对象
写sql语句时,表名称就是excel表格的sheet名称,
写法举例(以select为例)
select * from [Sheet1$] //sheet的名称写法两边要加上方括号[],表的名称末尾要加上“$”
然后就可以执行cmd命令了。
全部回答
  • 1楼网友:底特律间谍
  • 2021-03-29 03:46
我这里跟你讲讲怎么连接怎么筛选excel吧,
一、创建一个windows项目,在窗体里面放一个button,和一个dataGridView。
二、在解决方案资源管理器的引用中点击右键->添加引用->.Net->Microsoft.office.Interop.Excel(版本选11.0的不行的话就选12.0的)->确定。下面,继续在解决方案资源管理器的引用中点击右键->添加引用->COM->Microsoft office 11.0 Object Library->确定。
三、添加这两句:
using System.Data.OleDb;
using Microsoft.Office.Interop.Excel;
四、在button的Click事件中写:
//写明excel的路径
string excel_path = "D:\\贫困生综合情况表.xls";
//创建一个数据链接
string strCon = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" + excel_path + ";Extended Properties=Excel 8.0";
//Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|Database.accdb
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = "SELECT * FROM [Sheet1$]";
myConn.Open();
//打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
//创建一个 DataSet对象
DataSet myDataSet = new DataSet();
//得到自己的DataSet对象
myCommand.Fill(myDataSet, "[Sheet1$]");
//关闭此数据链接
myConn.Close();

dataGridView1.DataMember = "[Sheet1$]";
dataGridView1.DataSource = myDataSet;
这样,点击那个button就可以在dataGridView中显示那个excel的路径了
五、要进行筛选的话,先复制下面这个方法进去:
OleDbConnection conn;
OleDbDataAdapter adapter;
public System.Data.DataSet dbconn(string strSql)
{
conn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;Data Source =D:\\贫困生综合情况表.xls;Extended Properties=Excel 8.0");
conn.Open();
this.adapter = new OleDbDataAdapter(strSql, conn);
//System.Data.DataTable dtSelect = new System.Data.DataTable();
//int rnt = this.adapter.Fill(dtSelect);
DataSet myDataSet = new DataSet();
this.adapter.Fill(myDataSet, "[Sheet1$]");
conn.Close();
return myDataSet;
}
再添加一个button2,在button2的click事件中写:
dataGridView1.DataSource = null;
string Sql = "select * from [Sheet1$] where 1<2";

System.Data.DataSet ds = dbconn(Sql);
dataGridView1.DataMember = "[Sheet1$]";
dataGridView1.DataSource = ds;
这样就能够执行Sql语句所要做的东西了。
不知道我的回答是否符合你的需求,有什么问题可以跟我联系,在我的百度空间上留言,我会继续回复你
  • 2楼网友:北方的南先生
  • 2021-03-29 01:35
可以的
  • 3楼网友:未来江山和你
  • 2021-03-29 00:52
使用的
  • 4楼网友:洒脱疯子
  • 2021-03-29 00:46
连接字符串:"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=c:\somepath\mySpreadsheet.xls;DefaultDir=c:\somepath "
然后使用ODBC访问数据库:ODBCConnection、ODBCCommand、ODBCDataAdapter等
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯