asp.net C#取Excel 合并单元格内容
asp教程.net c#取excel 合并单元格内容
读取excel数据,填充dataset
// 连接字符串
string xlspath = server.mappath("~/www.111cn.net/somefile.xls");
string connstr = "provider=microsoft.jet.oledb.4.0;" +
"extended properties="excel 8.0;hdr=no;imex=1";" + // 指定扩展属性为 microsoft excel 8.0 (97) 9.0 (2000) 10.0 (2002),并且第一行作为数据返回,且以文本方式读取
"data source=" + xlspath;
string sql_f = "select * from [{0}]";
oledbconnection conn = null;
oledbdataadapter da = null;
datatable tblschema = null;
ilist<string> tblnames = null;
// 初始化连接,并打开
conn = new oledbconnection(connstr);
conn.open();
// 获取数据源的表定义元数据
//tblschema = conn.getschema("tables");
tblschema = conn.getoledbschematable(oledbschemaguid.tables, new object[] { null, null, null, "table" });
//gridview1.datasource = tblschema;
//gridview1.databind();
// 关闭连接
//conn.close();
tblnames = new list<string>();
foreach (datarow row in tblschema.rows) {
tblnames.add((string)row["table_name"]); // 读取表名
}
// 初始化适配器
da = new oledbdataadapter();
// 准备数据,导入dataset
dataset ds = new dataset();
foreach (string tblname in tblnames) {
da.selectcommand = new oledbcommand(string.format(sql_f, tblname), conn);
try {
da.fill(ds, tblname);
}
catch {
// 关闭连接
if (conn.state == connectionstate.open) {
conn.close();
}
throw;
}
}
// 关闭连接
(www.111cn.net)
if (conn.state == connectionstate.open) {
conn.close();
}
// 对导入dataset的每张sheet进行处理
// 这里仅做显示
gridview1.datasource = ds.tables[0];
gridview1.databind();
gridview2.datasource = ds.tables[1];
gridview2.databind();
// more codes
// .
这里我们就不需要对selec 语句进行"硬编码",可以根据需要动态的构造from 字句的"表名"。
不仅可以,获取表明,还可以获取每张表内的字段名、字段类型等信息:
tblschema = conn.getoledbschematable(oledbschemaguid.columns, new object[] { null, null, null, null });
在ado.net 1.x 时候只有oledb提供了getoledbschematable 方法,而sqlclient或者orcaleclient没有对应的方法,因为对应数据库教程已经提供了类似功能的存储过程或者系统表供应用程序访问,比如对于sql server: select *
from northwind.information_schema.columns
where table_name = n'customers'
而在ado.net 2.0中每个xxxconnenction都实现了基类system.data.common.dbconnection的 getschemal
private dataset binddsfromexcel(string strfiledir, string strdataname)
{
string strconn;
strconn = "provider=microsoft.jet.oledb.4.0;data source=" + strfiledir + ";extended properties='excel 8.0;hdr=false;imex=1'";
oledbconnection oleconn = new oledbconnection(strconn);
oleconn.open();
string sql = "select * from [" + strdataname + "$]";//如果不知道名字就用sheets[1]
oledbdataadapter oledaexcel = new oledbdataadapter(sql, oleconn);
dataset oledsexcle = new dataset();
oledaexcel.fill(oledsexcle, strdataname);
oleconn.close();
return oledsexcle;
}
from:http://www.111cn.net/net/net/35137.htm
asp.net C#取Excel 合并单元格内容的更多相关文章
- excel 合并 单元格内容
刚刚有人问怎么合并单元格内容,正好excel 我也不会,顺便查查记录一下 1.假设有两个单元格如下: 单元格1 单元格2 2. 在一个空白单元格输入 =( 这代 ...
- 读取excel合并单元格内容
def get_excel_content(excel_path): contents = [] if self.log_path.endswith('xls'): workbook = xlrd.o ...
- excel 根据单元格内容自动调整列宽
excel 根据单元格内容自动调整列宽 CreateTime--2018年5月28日08:49:40 Author:Marydon 1.情景展示 单元格宽度超过了列宽 2.解决方案 第一步:同时选 ...
- 让我头疼一下午的Excel合并单元格
Excel导出常见问题 excel导出其实不算什么难事 在网上copy下模板代码,填充自己的业务数据,提供一个http接口基本就可以得到你要导出的数据了. 但是,凡事都有例外,截止今天,excel导出 ...
- NPOI之Excel——合并单元格、设置样式、输入公式
首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...
- 【NetOffice Excel】Excel合并单元格【原】
CSharp操作Excel采用开源的原生.NET程序集NetOffice,格式兼容性更好. 在操作Excel的时候有时候需要合并单元格 using ExcelOffice = NetOffice.Ex ...
- NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等
首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...
- poi excel 合并单元格
结论:final CellRangeAddress cra = new CellRangeAddress(rowId, rowId + rowSkip, colId, colId + c ...
- poi导出excel合并单元格(包括列合并、行合并)
1 工程所需jar包如下:commons-codec-1.5.jarcommons-logging-1.1.jarlog4j-1.2.13.jarjunit-3.8.1.jarpoi-3.9-2012 ...
随机推荐
- PHP MVC单入口
ThinkPHP去除url中的index.php 看到ThinkPHP路径中没有index.php会很诧异,怎么实现的?其实很简单,使用了apache的url重写功能. ThinPHP URL去ind ...
- Vue router 一个路由对应多个视图
使用命名路由 https://jsfiddle.net/posva/6du90epg/ <script src="https://unpkg.com/vue/dist/vue.js&q ...
- Unity3D调用android方法(非插件方式)
关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...
- java动态代理_aop2
一.什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模 ...
- GDB和GDB Server
gdb是linux c编程标配的调试工具,平时接触比较多的可能是本机随gcc一起安装的调试工具.但是,即使是本机的gdb,也经常被printf代替,所以接触也仅限于知道. 简单程序固然可以用print ...
- Maven项目继承与聚合
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6628534.html 一:继承 在Java编程中,如果多个类都使用到了相同的内容.方法时,我们可以用继承的方 ...
- openerp学习笔记 视图继承(tree、form、search)
支持的视图类型:form.tree.search ... 支持的定位方法: <notebook position="inside"> ...
- Generate BKS File( Bouncy Castle KeyStore)
echo "Enter BKS output file name : \c" read filename echo "Enter BKS Password : \c&qu ...
- oracle 根据字段查询重复数据
1.情景展示 由上图可知,APPUSERID字段和VIRTUAL_CARDID字段存在一对多的关系,如何将重复的APPUSERID字段的数据查询出来呢? 2.原因分析 先查出重复的APPUSERI ...
- iOS中TableView小技巧
摘要: TableView是ios开发中经经常使用到的控件,这里统一记录一下开发中遇到的经常使用小技巧,不断探索更新.也希望大家能够告诉我很多其它经常使用的小技巧啦~一起进步 1.去除多余的列表线条 ...