当前位置:  编程技术>.net/c#/asp.net

c#(asp.net) excel操作实例

    来源: 互联网  发布时间:2014-08-30

    本文导语:  c# excel操作实例,实现如下的功能: 将datatable中的数据导出到指定的excel文件中;将指定excel文件中的数据转换成datatable对象,供应用程序进一步处理;将指定html字符串的数据转换成datatable对象 --根据“”等特殊字符进行处理...

c# excel操作实例,实现如下的功能:
将datatable中的数据导出到指定的excel文件中;将指定excel文件中的数据转换成datatable对象,供应用程序进一步处理;将指定html字符串的数据转换成datatable对象 --根据“”等特殊字符进行处理;从指定html字符串中剔除指定的对象等。

丰富而全面,是学习使用c#(asp.net)操作数据与excel相互转换的好例子。

代码示例:

///
/// 将datatable中的数据导出到指定的excel文件中
/// http://www.
/// web页面对象
/// 包含被导出数据的datatable对象
/// excel文件的名称
public static void export(system.web.ui.page page,system.data.datatable tab,string filename)
{
system.web.httpresponse httpresponse = page.response;
system.web.ui.webcontrols.datagrid datagrid=new system.web.ui.webcontrols.datagrid();
datagrid.datasource=tab.defaultview;
datagrid.allowpaging = false;
datagrid.headerstyle.backcolor = system.drawing.color.green;
datagrid.headerstyle.horizontalalign = horizontalalign.center;
datagrid.headerstyle.font.bold = true;
datagrid.databind();
httpresponse.appendheader("content-disposition","attachment;filename="+httputility.urlencode(filename,system.text.encoding.utf8)); //filename="*.xls";
httpresponse.contentencoding=system.text.encoding.getencoding("gb2312");
httpresponse.contenttype ="application/ms-excel";
system.io.stringwriter tw = new system.io.stringwriter() ;
system.web.ui.htmltextwriter hw = new system.web.ui.htmltextwriter (tw);
datagrid.rendercontrol(hw);

string filepath = page.server.mappath("..")+"\files\" +filename;
system.io.streamwriter sw = system.io.file.createtext(filepath);
sw.write(tw.tostring());
sw.close();

downfile(httpresponse,filename,filepath);

httpresponse.end();
}
private static bool downfile(system.web.httpresponse response,string filename,string fullpath)
{
try
{
response.contenttype = "application/octet-stream";

response.appendheader("content-disposition","attachment;filename=" +
httputility.urlencode(filename,system.text.encoding.utf8) + ";charset=gb2312");
system.io.filestream fs= system.io.file.openread(fullpath);
long flen=fs.length;
int size=102400;//每100k同时下载数据
byte[] readdata = new byte[size];//指定缓冲区的大小
if(size>flen)size=convert.toint32(flen);
long fpos=0;
bool isend=false;
while (!isend)
{
if((fpos+size)>flen)
{
size=convert.toint32(flen-fpos);
readdata = new byte[size];
isend=true;
}
fs.read(readdata, 0, size);//读入一个压缩块
response.binarywrite(readdata);
fpos+=size;
}
fs.close();
system.io.file.delete(fullpath);
return true;
}
catch
{
return false;
}
}

///
/// 将指定excel文件中的数据转换成datatable对象,供应用程序进一步处理
///
///
///
public static system.data.datatable import(string filepath)
{
system.data.datatable rs = new system.data.datatable();
bool canopen=false;

oledbconnection conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;"+
"data source=" + filepath + ";" +
"extended properties="excel 8.0;"");

try//尝试数据连接是否可用
{
conn.open();
conn.close();
canopen=true;
}
catch{}

if(canopen)
{
try//如果数据连接可以打开则尝试读入数据
{
oledbcommand myoledbcommand = new oledbcommand("select * from [sheet1$]",conn);
oledbdataadapter mydata = new oledbdataadapter(myoledbcommand);
mydata.fill(rs);
conn.close();
}
catch//如果数据连接可以打开但是读入数据失败,则从文件中提取出工作表的名称,再读入数据
{
string sheetname=getsheetname(filepath);
if(sheetname.length>0)
{
oledbcommand myoledbcommand = new oledbcommand("select * from ["+sheetname+"$]",conn);
oledbdataadapter mydata = new oledbdataadapter(myoledbcommand);
mydata.fill(rs);
conn.close();
}
}
}
else
{
system.io.streamreader tmpstream=file.opentext(filepath);
string tmpstr=tmpstream.readtoend();
tmpstream.close();
rs=getdatatablefromstring(tmpstr);
tmpstr="";
}
return rs;
}
///
/// 将指定html字符串的数据转换成datatable对象 --根据“”等特殊字符进行处理
///
/// html字符串
///
private static datatable getdatatablefromstring(string tmphtml)
{
string tmpstr=tmphtml;
datatable tb=new datatable();
//先处理一下这个字符串,删除第一个之前合最后一个之后的部分
int index=tmpstr.indexof(""))
{
tmpstri=tmpstri.replace("","^");
string[] tmpfield=tmpstri.split(separator);

for(int j=0;j0)
{
string field=tmpfield[j].substring(index,tmpfield[j].length-index);
if(existssparator) field=field.replace("^$&^","^");
if(i==0)
{
string tmpfieldname=field;
int sn=1;
while(tb.columns.contains(tmpfieldname))
{
tmpfieldname=field+sn.tostring();
sn+=1;
}
tb.columns.add(tmpfieldname);
}
else
{
newrow[j]=field;
}
}//end of if(index>0)
}

if(i>0)
tb.rows.add(newrow);
}
}
}

tb.acceptchanges();
return tb;
}

///
/// 从指定html字符串中剔除指定的对象
///
/// html字符串
/// 需要剔除的对象--例如输入""则剔除""和">"
///
public static string removestring(string tmphtml,string remove)
{
tmphtml=tmphtml.replace(remove.replace("


    
 
 

您可能感兴趣的文章:

  • 用C#,asp.net 做的网站,能用Linux做服务器吗?
  • c#(asp.net)接收存储过程返回值的方法
  • c#正则过滤图片标签 asp.net正则过滤的例子
  • c#(asp.net)实现的文件下载函数
  • asp.net(c#版)添加DataRow数据列到DataTable控件
  • c#(asp.net)连接excel的实例代码
  • c#(asp.net) new与override的区别
  • asp.net(c#) 使用Rex正则来生成字符串数组的代码
  • asp.ent 图片上传数据库的代码(c#)
  • c# asp .net 动态创建sql数据库表的方法
  • c#(asp.net)生成随机数(不重复)的例子
  • c#(asp.net)访问母版页的控件、属性、方法介绍
  • c#(asp.net) 时间操作基类(支持长短日期与时间差)
  • asp.net C#检查URL是否有效的方法
  • c# UpdatePanel无刷新上传图片 asp.net无刷新上传
  • c#(asp.net)线程配置总结
  • c# asp.net 多线程实例(经典)
  • asp.net验证码代码(C#)
  • asp.net中C#获取字符串中汉字的个数的具体实现方法
  • asp.net(C#)生成无限级别菜单的代码
  • asp.net实例 定义和使用asp:AccessDataSource
  • asp.net输出重写压缩页面文件的实例
  • asp match正则函数使用Matchs实例
  • asp.net实例代码 在DataGrid控件中显示数据
  • asp.net 伪静态简单实例
  • asp.net取得所有颜色值实例
  • asp.net实例代码之DataGrid数据编辑
  • asp.net 动态添加多个用户控件(实例代码)
  • asp.net 邮件发送类的简单实例
  • asp.net 动态创建控件的演示实例
  • asp.net操作cookie实例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c#/ASP.NET操作cookie(读写)代码示例
  • Linux操作系统能运行Asp.net的项目吗?
  • asp.net操作cookie的例子
  • 用ASP实现对Oracle数据库的操作
  • 一个ASP.NET的MYSQL的数据库操作类自己封装的
  • asp.net获取客户端参数与操作系统信息
  • asp.net xml文件的读写、添加、修改、删除操作示例
  • asp.net 操作cookie的简单实例
  • ASP.net中获取客户端参数操作系统信息
  • asp.net操作cookie的代码
  • asp.net操作ini文件示例
  • asp.net操作xml增删改示例分享
  • ASP.NET下向SQLServer2008导入文件实例操作方法
  • asp.net操作cookie详解
  • asp.net Ftp操作类(简单入门)
  • asp.net 操作config配置文件的方法介绍
  • asp.net xml操作实例小结
  • asp.net cookie操作实例学习
  • mysql仿asp的数据库操作类
  • ASP.NET之 Ajax相关知识介绍及组件图
  • 我想了解一些关于Java怎样与Asp或Asp.net结合方面在未来发展方向的问题?
  • asp.net UrlEncode对应asp urlencode的处理方法
  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)
  • asp与asp.net的session共享
  • 如何在unix下发布asp?
  • 怎么让Apache支持Asp?
  • ??谁能把ASP代码改为JSP的
  • Linux平台下哪种方法实现ASP好?
  • ASP和ASP.Net共享Session解决办法
  • 通过socket和asp打交道
  • 犹豫中……,到底是选择ASP,还是JSP?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3