OLEDB操作Excel

使用OLEDB操作Excel 的方法

OleDbConnection conn = null;
            try
            {
              //fileName 表示要操纵的Excel的文件路径,如果excel不存在,现创建它,可以通过模版文件复制创建。
                string strConn;
                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                "Data Source=" + fileName + ";" +
                "Extended Properties='Excel 8.0;HDR=no;IMEX=0'";

                conn = new OleDbConnection(strConn);
                conn.Open();
                System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
                cmd.Connection = conn;
                //在Excel的Sheet1的A3到H3处插入数据
                cmd.CommandText = "insert into [Sheet1$A3:H3] (F1,F2,F3,F4,F5,F6,F7,F8) values('" + a200.Date + "','"
                    + a200.PreviousClosePrice + "','" + a200.OpenPrice + "','" + a200.High + "','" + a200.Low + "','" + a200.Close + "','" +
                    a200.Change + "','" + a200.ChangeRate + "')";
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch (Exception e)
            {
                if (conn != null)
                    conn.Close();
                Console.WriteLine(e.ToString());
            }

注:
1)使用 Excel 工作簿时,默认情况下,区域中的第一行是标题行(或字段名称)。如果第一个区域不包含标题,您可以在连接字符串的扩展属性中指定 HDR=NO。
如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推);
2)IMEX=1将所有读入数据
看作字符,其他值(0、2)请查阅相关帮助文档;3)如果出现“找不到可安装的isam”错误,一般是连接字符串错误。

3、从excel文件读取数据
string sql = "select * from [sheet1$]";
DoOleSql(sql,"test.xls");

4、更新excel文件中的数据
string sql = "update [sheet1$] set FieldName1='333' where FieldName2='b3'";
DoOleSql(sql,"test.xls");

5、向excel文件插入数据
string sql = "insert into [sheet1$](FieldName1,FieldName2,…) values('a',’b’,…)";
DoOleSql(sql,"test.xls");

6、删除excel文件中的数据:不提倡使用这种方法
7、对于非标准结构的excel表格,可以指定excel中sheet的范围
1)读取数据:string sql = "select * from [sheet1A3:F20]";2stringsql="update[sheet1A9:F15] set FieldName='333' where AnotherFieldName='b3'";
3)插入数据:string sql = "insert into [sheet1$A9:F15](FieldName1,FieldName2,…) values('a',’b’,…)";
4)删除数据:不提倡
注:1)代码根据需要可以自行修改;2)如果出现“操作必须使用一个可更新的查询”错误,可能sql语句中对excel文件中的“字段”引用有错误,或对excel文件不
具有“修改”权限;3)如果出现“不能扩充选定范围”错误,可能是对excel文件引用的“范围”有错误。

posted on   荣锋亮  阅读(1113)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2013-12-22 Where is Silverlight now?
2013-12-22 A glance at C# vNext

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示