[转]利用C#配合OleDb编辑Excel文档

上一篇 / 下一篇  2010-01-11 15:01:25 / 个人分类:C#

本文转自:http://www.techmango.com/blog/article/DotNet/Csharp_OleDb_Excel_Edit.htm

'p.m0ut2C&?*q+\.F!xr[0

 

(?5V \j!o0

 

-[_;hnde&a*I0

想必许多同志们都会知道用组件Microsoft.Office.Interop.Excel来操作Excel文档,但是这种方法不够简便,还比不上利用C#配合OleDb编辑Excel文档,这种法使得Excel表格变得像数据表那样容易地被用于查寻,更新和删除记录.下面就介绍这种方法的常用编码方式:51Testing软件测试网T0Qrm na\ T

 

o(un7r8]0

protected void DoOleSql(string sql, string database)51Testing软件测试网 L L Sw x&d)x

   {       

#S x s8^Ig&}0

        OleDbConnection conn = new OleDbConnection();

#yUg8G"QQ w0

        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("\\") + database + "; Extended Properties='Excel 8.0;HDR=no;IMEX=0'";51Testing软件测试网1F/[(k0^-H

        try51Testing软件测试网F6dNjHkb

        {//打开连接

y sx?S8y"d0

            conn.Open();

c6G%P,C1]2s0

        }

u | e7qS0

        catch (Exception e)51Testing软件测试网;L:|(gr-{Ro#s n T

        {

FZ,\/|PX0

            Response.Write(e.ToString());51Testing软件测试网K:q!q];j&Cmm

        }51Testing软件测试网 Qti%o;~3J%~

        OleDbCommand  olecommand = new OleDbCommand(sql, conn);       

xhV ZU l*M;y-A0

        try51Testing软件测试网%F[a-T9L#wO X_

        {//执行语句

Hqa+[8R2Qh0

            olecommand.ExecuteNonQuery();51Testing软件测试网j#K#B#hymO+{T

        }51Testing软件测试网j/|AD*kw'X

        catch (Exception eee)

`4z7^&J0e0

        {51Testing软件测试网W ~%ihX^[ l(F

            Response.Write(eee.ToString());51Testing软件测试网C6y:GFPd(XN

            conn.Close();51Testing软件测试网$e6bO:mK2r-k |({`

        }

7Qr~!Z:t-oi1Li2G0

        finally

;Y]._"HU0

        {

,Z])Qf1X$Ed3Bf ^0

            conn.Close();//关闭数据库51Testing软件测试网0u-A9k5_*[3a{e+U#b

        }

e?(H \\0

        conn.Close();

Nz#d Y#y M7Xp0

}51Testing软件测试网:Ci;|r5t

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

.v6^9y y"?k"K0

3、从excel文件读取数据

h1W&KC9|*J0

string sql = "select * from [sheet1$]";

7@0G1pW9wR Ns0

DoOleSql(sql,"test.xls");51Testing软件测试网v'n'g3K!ypm!q

4、更新excel文件中的数据

4pK ^KV J(\8Gg0

string sql = "update [sheet1$] set FieldName1='333' where FieldName2='b3'";51Testing软件测试网'R*Us$i3m Dxf,G

DoOleSql(sql,"test.xls");

/e0Q,|.y$C@O_;e0

5、向excel文件插入数据

y,t\~WG-TM.H0

string sql = "insert into [sheet1$](FieldName1,FieldName2,) values('a',b,)";

5O U"yp:[/tKK0

DoOleSql(sql,"test.xls");51Testing软件测试网7@0d#g3c^"}P

6、删除excel文件中的数据:不提倡使用这种方法

#S7To)x+Zh0

7、对于非标准结构的excel表格,可以指定excelsheet的范围51Testing软件测试网C5GkvD/SU F.\]6w

1)读取数据:string sql = "select * from [sheet1$A3:F20]";

+N"pign)n"X8A X0

2)更新数据:string sql = "update [sheet1$A9:F15] set FieldName='333' where AnotherFieldName='b3'";51Testing软件测试网`? s pX w

3)插入数据:string sql = "insert into [sheet1$A9:F15](FieldName1,FieldName2,) values('a',b,)";51Testing软件测试网#jZU5aOEEw.KZC

4)删除数据:不提倡

f C&^2z+V3mV0

注:1) 代码根据需要可以自行修改;2)如果出现“操作必须使用一个可更新的查询”错误,可能sql语句中对excel文件中的“字段”引用有错误,或对 excel文件不具有“修改”权限;3)如果出现“不能扩充选定范围”错误,可能是对excel文件引用的“范围”有错误。51Testing软件测试网#OPO$e#{hV

51Testing软件测试网3cuge1]DD

51Testing软件测试网8W*G V$_K*?l3{6e-SA



TAG:

 

评分:0

我来说两句

Open Toolbar