http://www.aspxcn.com/dotnetarticle/html/97.html
word 和 Excel都行。
word 和 Excel都行。
解决方案 »
- 怎样从数据库中读取指定的图片显示在img中?图片以路径形式存在数据库中
- 求助高手关于treeview的展开深度的问题
- 帮忙解释下这个HTML代码是什么意思,我看不懂。
- 如何让动态添加的Button快捷键为回车?
- 关于dropdownlist的问题.高手们看看
- 我现在做的是WinForm下的程序,如果我想转向WebForm,请问该从何开始?
- CGI Error!
- 文件名验证问题
- 请问treeView WebControl怎么和一个xml文件挂在一起显示一个树呀?
- 谁说过使用资源超过多少会引起线程重启,怎么设置它不自动重启
- 如何在删除时候添加一个确认的窗口!
- 如何在页面load时把给页面上的一个DIV的背景色赋值呢?
在.net中excel导出有多种方法。比较常用的有一下几种:
1.用OWC(Office Web Components)
首先要在项目->添加引用->COM中添加Microsoft Office Web Components ,然后定义一个OWC.SpreadsheetClass 如:Dim xlsheet As New OWC.SpreadsheetClass 然后就可以向sheet中添加数据了,使用xlsheet.Cells(2, 2) = "表格填充内容" 格式添加数据,使用xlsheet.Range("B3:F3") 设置单元格的样式。
最后用xlsheet.ActiveSheet.Export(Path, OWC.SheetExportActionEnum.ssExportActionNone) 的方式将excel文件保存在硬盘上。
这种方法优点是无需系统权限分配,缺点是对于单元格的格式属性设置不够丰富,某些属性无法设置或者是设置比较麻烦。
2.用Excel Application
用这种方法之前首先要给aspnet用户设置权限,否则程序会不能执行的。设置权限的过程如下:
在运行处运行“dcomcnfg.exe”启动“分布式COM配置属性”
在应用程序列表框中双击“Microsoft Excel 应用程序”
选择“安全性”标签
选择“使用自定义访问权限”单选框,点击“编辑”按钮
添加本地“ASPNET”用户,权限为“允许访问”
在“安全性”标签中选择“使用自定义启动权限”单选框,点击“编辑”按钮
添加本地“ASPNET”用户,权限为“允许访问”
以上工作在需要执行excel导出的服务器上进行一次即可。
以后在每个工程中要选择“项目->添加引用中选择“COM”标签,添加“Microsoft Excel x.x Object Library””到项目中,以后就可以执行excel导出操作了。
在需要导出的时候首先定义一下excel application、excel Workbooks、excel Worksheets变量:
Dim excelApp As Excel.Application
Dim excelBook As Excel.Workbook
Dim excelSheet As Excel.Worksheet
excelApp = New Excel.Application
excelBook = excelApp.Workbooks.Add
excelSheet = excelBook.Worksheets(1)
之后就可以将数据放入excel Sheet中了,而且可以方便的设置单元格的各个属性参数。比如,设置行高可以用excelSheet.Rows(intRowIndex).RowHeight = dblRowHeight
用这种方法可以实现几乎全部的excel功能,如果对于某个功能不知道用excel application如何实现,可以在excel中通过“记录宏-执行操作-查看宏代码”的方法得到实现该功能所用到的属性和方法。
最后要将数据保存到硬盘上,只需用excelBook.SaveAs(FileName)方法即可。
这种方法的优点是功能强大,可以实现几乎所有的excel功能。缺点是需要权限配置,而且运行时间比较长,占用资源比较高,结束后可能在系统中有残留的EXCEL进程。
3.直接存为文本文件
直接将数据按照html表格的格式存为文本文件,扩展名改成xls就可以用excel打开,或者按照Office XP之后支持的xml格式,这种格式所能实现的功能同样强大,缺点就是需要知道各种功能或者excel单元格格式的xml表达方法,工作量比较大。
这种方法优点是不需要权限配置(只需能够向硬盘写文件的权限就可以),执行速度快。缺点是需要知道大量的excel格式的xml或者html表达方式,前期准备工作量大。
private void DataSetToExcelCsv(DataSet ds)
{
//生成Excel标题
string strTemp,strFileName;
string strExcel="";
char chEnter=(char)10; //换行符
strExcel=lblReportTime.Text+chEnter;
strExcel += lblReportCount.Text+chEnter;
strExcel += ",, 通话总次数(次),,,, 通话总时长(分),,,, 通话总金额(元)"+chEnter+"话机号码, 月份, 国际, 国内, 港澳台, 合计, 国际, 国内, 港澳台, 合计, 国际, 国内, 港澳台, 合计";
int I,J;
byte[] bExcel;
DataTable dt =ds.Tables[0];
DataRow Dr;
strExcel = strExcel + chEnter;
//给Excel中写入数据
for(I = 0;I< dt.Rows.Count;I++)
{
Dr=dt.Rows[I];
strTemp = "";
for(J = 0;J<dt.Columns.Count ;J++)
{
strTemp = strTemp + Dr[J].ToString().Trim() + ",";
}
strTemp = strTemp + chEnter;
strExcel = strExcel + strTemp;
}
//生成文件名: 当前年月日小时分钟秒+查询的起始年月 +查询的终止年月 + 随机数
Random rd=new Random(int.Parse(DateTime.Now.ToString("MMddhhmmss")));
strFileName =DateTime.Now.ToString("yyyyMMdd")+DateTime.Now.Hour+DateTime.Now.Minute+DateTime.Now.Second+txtBeginTime.Text.Trim()+txtFinishTime.Text.Trim()+rd.Next(999999).ToString()+ ".CSV";
bExcel= Encoding.Default.GetBytes(strExcel);
FileStream fs=new FileStream(Server.MapPath(".") + "\\..\\..\\excel-file\\" + strFileName, FileMode.OpenOrCreate);
fs.Write(bExcel, 0, bExcel.Length);
fs.Close();
string test="../../excel-file/" + strFileName;
Response.Redirect(test);
}