控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

SQL 操作Excel (使用Jet.OLEDB,需要安装Excel)

作者:佚名 出处:互联网 2010年08月20日 阅读:

SQL 操作Excel (使用Jet.OLEDB,需要安装Excel)
 
使用Jet.OLEDB,虽然有很多的局限性.但他无疑是与DataTable操作最方便的方法了.速度也很快.NPOI有点慢.

 

1.链接:string connstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;'",物理地址);
2.取所有表名:
using (OleDbConnection objconn = new OleDbConnection(connstr))
{
    try
    {
        objconn.Open();
        dt = objconn.GetSchema("tables");
        objconn.Close();
    }
    catch(Exception ee)
    {
        //
    }
}
3.取表内容
string tbName = "";//表名后会有$
System.Data.DataTable dt = new System.Data.DataTable();
using (OleDbConnection objconn = new OleDbConnection(connstr))
{
    try
    {
        objconn.Open();
        OleDbCommand cmd = objconn.CreateCommand();
        cmd.CommandText = "select * from [" + tbName + "]";
        OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
        adp.Fill(dt);
        objconn.Close();
    }
    catch(Exception ee)
    {
        //
    }
}
4.根据DataTable插入更新
using (OleDbConnection objconn = new OleDbConnection(connstr))
{

    try
    {
        objconn.Open();
        //发现手工写列名很容易出错,就提取一下表的列表
        OleDbCommand cmd = objconn.CreateCommand();
        cmd.CommandText = "select * from [Sheet1$]";
        OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
        adp.Fill(dt);

        StringBuilder hdrColumn = new StringBuilder();
        for (int i = 0; i < dt.Columns.Count; i++)
        {
            hdrColumn.Append("[" + dt.Columns[i].ColumnName.ToString() + "],");
        }
        //插入行
        foreach (DataRow dr in dataTable.Rows)
        {
            StringBuilder columnString = new StringBuilder();
            for (int i = 0; i < dataTable.Columns.Count;i++ )
            {
                DataColumn dc = dataTable.Columns[i];
                columnString.Append("'" + dr[dc.ColumnName] + "',");
            }
            string sqlStr = "insert into [Sheet1$] (" + hdrColumn.ToString().Trim(',') + ") values(" + columnString.ToString().Trim(',') + ")";
            OleDbCommand Cmd = new OleDbCommand(sqlStr, objconn);
            Cmd.ExecuteNonQuery();
        }

        objconn.Close();
    }
    catch(Exception ee)
    {
        //
    }
}
5. Jet 性质决定不支持Delete操作
注:插入行操作时,单元格格式会根据上一行的设置设定.

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统