中易网

关于c#读取excel.

答案:3  悬赏:60  
解决时间 2021-02-12 13:40
关于c#读取excel.
最佳答案
空字串
全部回答
如果单元格时空的,那么你读取的时候会出错,你必须用字符串代替。但是那样很麻烦,顶
com组件的方式读取excel : 这种方式需要先引用 microsoft.office.interop.excel 。首选说下这种方式的优缺点 优点:可以非常灵活的读取excel中的数据 缺点:如果是web站点部署在iis上时,还需要服务器机子已安装了excel,有时候还需要为配置iis权限。最重要的一点因为是基于单元格方式读取的,所以数据很慢。 代码如下: datatable getdatafromexcelbycom(bool hastitle = false) { openfiledialog openfile = new openfiledialog(); openfile.filter = "excel(*.xlsx)|*.xlsx|excel(*.xls)|*.xls"; openfile.initialdirectory = environment.getfolderpath(environment.specialfolder.desktop); openfile.multiselect = false; if (openfile.showdialog() == dialogresult.cancel) return null; var excelfilepath = openfile.filename; excel.application app = new excel.application(); excel.sheets sheets; object omissiong = system.reflection.missing.value; excel.workbook workbook = null; datatable dt = new datatable(); try { if (app == null) return null; workbook = app.workbooks.open(excelfilepath, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong, omissiong); sheets = workbook.worksheets; //将数据读入到datatable中 excel.worksheet worksheet = (excel.worksheet)sheets.get_item(1);//读取第一张表 if (worksheet == null) return null; int irowcount = worksheet.usedrange.rows.count; int icolcount = worksheet.usedrange.columns.count; //生成列头 for (int i = 0; i < icolcount; i++) { var name = "column" + i; if (hastitle) { var txt = ((excel.range)worksheet.cells[1, i + 1]).text.tostring(); if (!string.isnullorwhitespace(txt)) name = txt; } while (dt.columns.contains(name)) name = name + "_1";//重复行名称会报错。 dt.columns.add(new datacolumn(name, typeof(string))); } //生成行数据 excel.range range; int rowidx = hastitle ? 2 : 1; for (int irow = rowidx; irow <= irowcount; irow++) { datarow dr = dt.newrow(); for (int icol = 1; icol <= icolcount; icol++) { range = (excel.range)worksheet.cells[irow, icol]; dr[icol - 1] = (range.value2 == null) ? "" : range.text.tostring(); } dt.rows.add(dr); } return dt; } catch { return null; } finally { workbook.close(false, omissiong, omissiong); system.runtime.interopservices.marshal.releasecomobject(workbook); workbook = null; app.workbooks.close(); app.quit(); system.runtime.interopservices.marshal.releasecomobject(app); app = null; } }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下午北京西站到廊坊
教材3d解读七下英语12单元答案
脸颊两侧起皮,感觉很干,很崩,很难受,
观山苑广场怎么去啊,有知道地址的么
消防工作五自查,四应会,三提示,的内容是什
特种兵之火风凤凰雷战闻女王的脚是哪集
【LOVE LIVE!】西木野真姬 独唱 [合集]
大关县天星镇朝阳社区居民委员会地址在什么地
梦三国本子专业代l微信密码多少
38妇女节送妈妈几枝花比较好一些呢?送什么花
12小时健身美容会所地址有知道的么?有点事想
在成都天府新区购房90平以上,但未交税,户口在
有谁知道养生太极掌一,二,三 太极剑32,42
兔子先生奶茶铺地址在哪,我要去那里办事
已知某原子的电子排布式为:1s22s22p63s23p63
推荐资讯
乐万家批发超市地址在什么地方,想过去办事
福建省泉州去台湾自由行续签除了了要通行证还
兄弟木业在什么地方啊,我要过去处理事情
江西高安一品轩樟木箱家具我想知道这个在什么
佛山市顺德区广交出租汽车有限公司在哪里啊,
我是一个偶数,是一个两位数,十位和个位的数
windows10怎样设置打印机共享
在网上购买二手车可信吗?怎么价格都那么便宜
飞翔网络在什么地方啊,我要过去处理事情
多路显卡和普通显卡有什么用途上的区别?
章字头加一个克什么字,谢谢。
简述古希腊哲学家关于世界本源的探讨:哲学家
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?