zoukankan
html css js c++ java
asp.net里导出excel表方法汇总
//
1、由dataset生成
public
void
CreateExcel(DataSet ds,
string
typeid,
string
FileName)
{
HttpResponse resp;
resp
=
Page.Response;
resp.ContentEncoding
=
System.Text.Encoding.GetEncoding(
"
GB2312
"
);
resp.AppendHeader(
"
Content-Disposition
"
,
"
attachment;filename=
"
+
FileName);
string
colHeaders
=
""
, ls_item
=
""
;
int
i
=
0
;
//
定义表对象与行对像,同时用DataSet对其值进行初始化
DataTable dt
=
ds.Tables[
0
];
DataRow[] myRow
=
dt.Select(
""
);
//
typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
if
(typeid
==
"
1
"
)
{
//
取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for
(i
=
0
;i colHeaders
+=
dt.Columns[i].Caption.ToString()
+
"
\t
"
;
colHeaders
+=
dt.Columns[i].Caption.ToString()
+
"
\n
"
;
//
向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//
逐行处理数据
foreach
(DataRow row
in
myRow)
{
//
在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for
(i
=
0
;i ls_item
+=
row[i].ToString()
+
"
\t
"
;
ls_item
+=
row[i].ToString()
+
"
\n
"
;
//
当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item
=
""
;
}
}
else
{
if
(typeid
==
"
2
"
)
{
//
从DataSet中直接导出XML数据并且写到HTTP输出流中
resp.Write(ds.GetXml());
}
}
//
写缓冲区中的数据到HTTP头文件中
resp.End();
}
//
2、使用微软的C++写的ACTIVEX控件:
http://download.microsoft.com/download/OfficeXPDev/sample/1.0/WIN98MeXP/EN-US/Dsoframerctl.exe
//
3、由datagrid生成:
public
void
ToExcel(System.Web.UI.Control ctl)
{
HttpContext.Current.Response.AppendHeader(
"
Content-Disposition
"
,
"
attachment;filename=Excel.xls
"
);
HttpContext.Current.Response.Charset
=
"
UTF-8
"
;
HttpContext.Current.Response.ContentEncoding
=
System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType
=
"
application/ms-excel
"
;
//
image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
ctl.Page.EnableViewState
=
false
;
System.IO.StringWriter tw
=
new
System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw
=
new
System.Web.UI.HtmlTextWriter (tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
用法:ToExcel(datagrid1);
//
4、这个用dataview ,代码好长
public
void
OutputExcel(DataView dv,
string
str)
{
//
//
TODO: 在此处添加构造函数逻辑
//
//
dv为要输出到Excel的数据,str为标题名称
GC.Collect();
Application excel;
//
= new Application();
int
rowIndex
=
4
;
int
colIndex
=
1
;
_Workbook xBk;
_Worksheet xSt;
excel
=
new
ApplicationClass();
xBk
=
excel.Workbooks.Add(
true
);
xSt
=
(_Worksheet)xBk.ActiveSheet;
//
//
取得标题
//
foreach
(DataColumn col
in
dv.Table.Columns)
{
colIndex
++
;
excel.Cells[
4
,colIndex]
=
col.ColumnName;
xSt.get_Range(excel.Cells[
4
,colIndex],excel.Cells[
4
,colIndex]).HorizontalAlignment
=
XlVAlign.xlVAlignCenter;
//
设置标题格式为居中对齐
}
//
//
取得表格中的数据
//
foreach
(DataRowView row
in
dv)
{
rowIndex
++
;
colIndex
=
1
;
foreach
(DataColumn col
in
dv.Table.Columns)
{
colIndex
++
;
if
(col.DataType
==
System.Type.GetType(
"
System.DateTime
"
))
{
excel.Cells[rowIndex,colIndex]
=
(Convert.ToDateTime(row[col.ColumnName].ToString())).ToString(
"
yyyy-MM-dd
"
);
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment
=
XlVAlign.xlVAlignCenter;
//
设置日期型的字段格式为居中对齐
}
else
if
(col.DataType
==
System.Type.GetType(
"
System.String
"
))
{
excel.Cells[rowIndex,colIndex]
=
"
'
"
+
row[col.ColumnName].ToString();
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment
=
XlVAlign.xlVAlignCenter;
//
设置字符型的字段格式为居中对齐
}
else
{
excel.Cells[rowIndex,colIndex]
=
row[col.ColumnName].ToString();
}
}
}
//
//
加载一个合计行
//
int
rowSum
=
rowIndex
+
1
;
int
colSum
=
2
;
excel.Cells[rowSum,
2
]
=
"
合计
"
;
xSt.get_Range(excel.Cells[rowSum,
2
],excel.Cells[rowSum,
2
]).HorizontalAlignment
=
XlHAlign.xlHAlignCenter;
//
//
设置选中的部分的颜色
//
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex
=
19
;
//
设置为浅黄色,共计有56种
//
//
取得整个报表的标题
//
excel.Cells[
2
,
2
]
=
str;
//
//
设置整个报表的标题格式
//
xSt.get_Range(excel.Cells[
2
,
2
],excel.Cells[
2
,
2
]).Font.Bold
=
true
;
xSt.get_Range(excel.Cells[
2
,
2
],excel.Cells[
2
,
2
]).Font.Size
=
22
;
//
//
设置报表表格为最适应宽度
//
xSt.get_Range(excel.Cells[
4
,
2
],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[
4
,
2
],excel.Cells[rowSum,colIndex]).Columns.AutoFit();
//
//
设置整个报表的标题为跨列居中
//
xSt.get_Range(excel.Cells[
2
,
2
],excel.Cells[
2
,colIndex]).Select();
xSt.get_Range(excel.Cells[
2
,
2
],excel.Cells[
2
,colIndex]).HorizontalAlignment
=
XlHAlign.xlHAlignCenterAcrossSelection;
//
//
绘制边框
//
xSt.get_Range(excel.Cells[
4
,
2
],excel.Cells[rowSum,colIndex]).Borders.LineStyle
=
1
;
xSt.get_Range(excel.Cells[
4
,
2
],excel.Cells[rowSum,
2
]).Borders[XlBordersIndex.xlEdgeLeft].Weight
=
XlBorderWeight.xlThick;
//
设置左边线加粗
xSt.get_Range(excel.Cells[
4
,
2
],excel.Cells[
4
,colIndex]).Borders[XlBordersIndex.xlEdgeTop].Weight
=
XlBorderWeight.xlThick;
//
设置上边线加粗
xSt.get_Range(excel.Cells[
4
,colIndex],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeRight].Weight
=
XlBorderWeight.xlThick;
//
设置右边线加粗
xSt.get_Range(excel.Cells[rowSum,
2
],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight
=
XlBorderWeight.xlThick;
//
设置下边线加粗
//
//
显示效果
//
excel.Visible
=
true
;
//
xSt.Export(Server.MapPath(".")+"\\"+this.xlfile.Text+".xls",SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportFormat.ssExportHTML);
xBk.SaveCopyAs(Server.MapPath(
"
.
"
)
+
"
\\
"
+
this
.xlfile.Text
+
"
.xls
"
);
ds
=
null
;
xBk.Close(
false
,
null
,
null
);
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
xBk
=
null
;
excel
=
null
;
xSt
=
null
;
GC.Collect();
string
path
=
Server.MapPath(
this
.xlfile.Text
+
"
.xls
"
);
System.IO.FileInfo file
=
new
System.IO.FileInfo(path);
Response.Clear();
Response.Charset
=
"
GB2312
"
;
Response.ContentEncoding
=
System.Text.Encoding.UTF8;
//
添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment; filename=
"
+
Server.UrlEncode(file.Name));
//
添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader(
"
Content-Length
"
, file.Length.ToString());
//
指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType
=
"
application/ms-excel
"
;
//
把文件流发送到客户端
Response.WriteFile(file.FullName);
//
停止页面的执行
Response.End();
}
查看全文
相关阅读:
测试本地node包
webpack4+react多页面架构
身为前端开发工程师,你需要了解的搜索引擎优化SEO.
代码改变世界 | 如何封装一个简单的 Koa
云计算系统測试之技术概念
Cocos2d-x3.0 从代码中获取cocostudio编辑的UI控件
Spring使用HibernateDaoSupport操作数据
gitlab一键安装 笔记
【TCP/IP】IP路由选择
ios网络学习------3 用非代理方法实现异步post请求
原文地址:https://www.cnblogs.com/acelove/p/106886.html
最新文章
面向对象思想的设计原则概述
多线程常见的面试题
HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源、特性、算法等多个方面进行对比总结。力争多角度、全方位的展示二者的不同,做到此问题的终结版。
Java中设计模式的概述(设计模式是经验的总结)
Retrofit 2.0 超能实践,完美支持Https传输
nvm使用笔记
Python HTTP库requests中文页面乱码解决方案!
程序员几大不能去
Opencv3.1+python2.7的CentOS7安装
得到Android keystore签名的命令方法
热门文章
Android Studio布局等XML文件怎么改都恢复原状的问题
Android Java端的Socket.io-client
某司的面试单部分
Ubuntu硬盘空间清理
我所认识的闭包
一次下载多个文件的解决思路-JS
前后端分离后的前端时代
使用Hexo+Github搭建属于自己的博客
IE10无法识别setPrototypeOf属性问题
Taro:使用taro完成小程序开发
Copyright © 2011-2022 走看看