EXCEL导入

导入 : OLEDB 方式  filePath:文件绝对路径

1.此种 适用 office07 之前的版本 (.xls)

// string str = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + filePath +  ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";

 2.07之后得版本

string str = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + filePath +  ";Extended Properties='Excel 12.0; HDR=YES; IMEX=1'";

注:HDR表示要把第一行作为数据还是作为列名,作为数据用HDR=no,作为列名用HDR=yes;

代码:

OleDbConnection Conn = new OleDbConnection(str);
            try
            {
                Conn.Open();
                DataTable dt = Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                string tablename = "", sql = "";
                w_import_select_table wi = new w_import_select_table();
                wi.dt = dt;
                if (wi.ShowDialog() != DialogResult.Yes) { return null; }
                //string tablename = dt.Rows[0][2].ToString().Trim();
                tablename = wi.listBoxControl1.Text.Trim();
                sql = "select * from [" + tablename + "]";
                OleDbDataAdapter da = new OleDbDataAdapter(sql, Conn);
                DataSet ds = new DataSet();
                da.Fill(ds, tablename);
                try
                {
                        // 修改 表头
                    SetValue(ds.Tables[0]);
                }
                catch (Exception ex)
                {
                    MsgBox.ShowOK("转换失败!请确保清单模板的内容格式正确!\r\n" + ex.Message); return null;
                }
                DataSet Cds = new DataSet();
                try
                {
                    // 去除 空白行
                    DataRow[] rows = ds.Tables[0].Select("isnull(name,'') <> ''");
                    DataTable cdt = ds.Tables[0].Clone();
                    rows.ForEachEx(row => cdt.Rows.Add(row.ItemArray));
                   // cdt.Rows.Add(rows);
                    Cds.Tables.Add(cdt);
                    //Cds.Tables.Add(cdt, tablename);
                }
                catch (Exception ex) { MsgBox.ShowOK("转换失败!请确保没有修改清单模板的表头!\r\n" + ex.Message); return null; }
                return Cds;
            }
            catch (Exception ex)
            {
                MsgBox.ShowOK(ex.Message, "加载清单失败");
                return null;
            }
            finally
            {
            }

注:Provider=Microsoft.Ace.OleDb.12.0; 方式 会提示 :  provider is not registered on the local machine

    原因: 没有安装 链接驱动

解决方案: 安装驱动 下载地址 : https://www.microsoft.com/zh-CN/download/confirmation.aspx?id=23734

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值