Asp.net/c#+OleDb操作excel文件

1、环境配置:加入using System.OleDb
2、编写连接与操作excel文件的通用函数

protected void DoOleSql(string sql, string database)
{       
    OleDbConnection conn = new OleDbConnection();
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("//") + database + "; Extended Properties='Excel 8.0;HDR=no;IMEX=0'";
    try
    {
        conn.Open();//打开连接
    }

    catch (Exception e)
    {
        Response.Write(e.ToString());
    }
    OleDbCommand  olecommand = new OleDbCommand(sql, conn);
    try
    {
        olecommand.ExecuteNonQuery();//执行语句
    }
    catch (Exception eee)
    {
        Response.Write(eee.ToString());
        conn.Close();
    }
    finally
    {
        conn.Close();//关闭数据库
    }
    conn.Close();
}

注:
    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 [sheet1$A3:F20]";
    2)更新数据:string sql = "update [sheet1$A9: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文件引用的“范围”有错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值