EXCEL导入表

1 篇文章 0 订阅

通过fileupload获取选中excel数据,并转换为datatable 类型

try

            {

                string path = "";

                string FilePath = System.Web.HttpContext.Current.Server.MapPath("~/");

                FilePath += "excel\\";

                string Extension = System.IO.Path.GetExtension(file.PostedFile.FileName).ToLower();

                if (Extension == ".xls" || Extension == ".xlsx")

                {

                    Random ran = new Random();

                    string iran = ran.Next(100000000, 1000000000).ToString();

                    string NewFilePath = DateTime.Now.ToString("yyyyMMddHHmmssfff") + iran + Extension;

                    file.SaveAs(FilePath + NewFilePath);

                    path = FilePath + NewFilePath;

                }

                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";

                //获取excel数据 

                DataTable dt1 = new DataTable("exceltable");

                OleDbConnection conn = new OleDbConnection(strConn);

                conn.Open();

 

                DataTable dt = conn.GetSchema("TABLES");

                if (dt.Rows.Count > 0)

                {

                    string selSqlStr = string.Format("select * from [{0}]", dt.Rows[0]["TABLE_NAME"]);

                    OleDbDataAdapter oleDa = new OleDbDataAdapter(selSqlStr, conn);

                    oleDa.Fill(dt1);

                }

                conn.Close();

                return dt1;

            }

            catch

            {

                return null;

            }

 

数据链接:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'

随电脑不同而变。

HDR=YES     有两个值:YES/NO,表示第一行是否字段名,默认是YES,第一行是字段名。

IMEX=1 解决数字与字符混合时,识别不正常的情况。

因为不同的模式代表著不同的读写行为:

当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。

当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。

当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途”

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值