zoukankan
html css js c++ java
从DataTable导出Excel,并下载,删除Excel进程。
页面上加入一个button即可.
源代码如下:
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Web;
using
System.Web.SessionState;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
using
Microsoft.Office.Interop.Excel;
namespace
Test
{
/**/
///
<summary>
///
TestExcel 的摘要说明。
///
</summary>
public
class
TestExcel : System.Web.UI.Page
{
protected
System.Web.UI.WebControls.Button Button1;
private
void
Page_Load(
object
sender, System.EventArgs e)
{
}
Web 窗体设计器生成的代码
#region
Web 窗体设计器生成的代码
override
protected
void
OnInit(EventArgs e)
{
//
//
CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base
.OnInit(e);
}
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.Button1.Click
+=
new
System.EventHandler(
this
.Button1_Click);
this
.Load
+=
new
System.EventHandler(
this
.Page_Load);
}
#endregion
private
void
Button1_Click(
object
sender, System.EventArgs e)
{
try
{
string
DownloadPath
=
Server.MapPath(
"
.
"
);
//
副本的文件夹路径。
//
副本的文件名。
string
TempFileName
=
DateTime.Now.ToString(
"
yyyyMMdd
"
)
+
DateTime.Now.Hour
+
DateTime.Now.Minute
+
DateTime.Now.Second
+
"
.XLS
"
;
this
.txtTempFileName.Text
=
TempFileName;
object
missing
=
System.Reflection.Missing.Value;
object
missing2
=
System.Reflection.Missing.Value;
ApplicationClass myExcel
=
new
ApplicationClass();
Workbook myBook
=
(Workbook)myExcel.Workbooks.Add(missing);
Worksheet curSheet
=
(Worksheet)myBook.Sheets[
1
];
//
设置Excel样式
Range r1
=
(Range)myExcel.Cells[
1
,
2
];
Range r2
=
(Range)myExcel.Cells[
3
,
4
];
r1.Font.Bold
=
true
;
r2.Font.Bold
=
true
;
string
DownloadFilePath
=
DownloadPath
+
"
\\
"
+
TempFileName;
System.Data.DataTable dt
=
this
.GetTable();
int
rc
=
dt.Rows.Count;
//
绘制边框
Range rBorders
=
(Range)curSheet.get_Range(myExcel.Cells[
7
,
1
],myExcel.Cells[
7
+
rc
+
1
,
10
]);
rBorders.Borders.LineStyle
=
1
;
curSheet.get_Range(myExcel.Cells[
7
,
1
],myExcel.Cells[
7
+
rc
+
1
,
1
]).Borders[XlBordersIndex.xlEdgeLeft].Weight
=
XlBorderWeight.xlThick;
//
设置左边线加粗
curSheet.get_Range(myExcel.Cells[
7
,
1
],myExcel.Cells[
7
,
10
]).Borders[XlBordersIndex.xlEdgeTop].Weight
=
XlBorderWeight.xlThick;
//
设置设置上边线加粗
curSheet.get_Range(myExcel.Cells[
7
+
rc
+
1
,
1
],myExcel.Cells[
7
+
rc
+
1
,
10
]).Borders[XlBordersIndex.xlEdgeBottom].Weight
=
XlBorderWeight.xlThick;
//
设置下边线加粗
curSheet.get_Range(myExcel.Cells[
7
,
10
],myExcel.Cells[
7
+
rc
+
1
,
10
]).Borders[XlBordersIndex.xlEdgeRight].Weight
=
XlBorderWeight.xlThick;
//
设置右边线加粗
//
Excel的表头信息
myExcel.Cells[
1
,
2
]
=
"
表头信息
"
;
myExcel.Cells[
2
,
2
]
=
"
New Added:
"
+
DateTime.Now.ToString();
myExcel.Cells[
3
,
4
]
=
"
VENDOR CODE LIST - BY PRODUCTS.
"
;
myExcel.Cells[
4
,
4
]
=
"
****************************************
"
;
myExcel.Cells[
5
,
9
]
=
"
DATE From:
"
+
DateTime.Now.ToString();
myExcel.Cells[
6
,
9
]
=
"
DATE To:
"
+
DateTime.Now.ToString();
myExcel.Cells[
7
,
5
]
=
"
PARTS SUPPLIER
"
;
//
设置Excel表列头
myExcel.Cells[
8
,
1
]
=
"
Item
"
;
myExcel.Cells[
8
,
2
]
=
"
OrgCode
"
;
myExcel.Cells[
8
,
3
]
=
"
VendorCode
"
;
myExcel.Cells[
8
,
4
]
=
"
VendorName
"
;
myExcel.Cells[
8
,
5
]
=
"
A
"
;
myExcel.Cells[
8
,
6
]
=
"
B
"
;
myExcel.Cells[
8
,
7
]
=
"
C
"
;
myExcel.Cells[
8
,
8
]
=
"
PayMentType
"
;
myExcel.Cells[
8
,
9
]
=
"
TermsCode
"
;
myExcel.Cells[
8
,
10
]
=
"
CreateTime
"
;
//
设置表头字体风格
curSheet.get_Range(myExcel.Cells[
7
,
1
],myExcel.Cells[
8
,
10
]).Font.Bold
=
true
;
int
j
=
1
;
//
j为总结的Item数目的变量
int
i
=
9
;
while
(i
-
8
<=
dt.Rows.Count)
{
myExcel.Cells[i,
1
]
=
j.ToString();
myExcel.Cells[i,
2
]
=
dt.Rows[i
-
9
][
"
Name
"
].ToString().Trim();
myExcel.Cells[i,
3
]
=
dt.Rows[i
-
9
][
"
cost
"
].ToString().Trim();
myExcel.Cells[i,
4
]
=
dt.Rows[i
-
9
][
"
bug
"
].ToString().Trim();
myExcel.Cells[i,
5
]
=
""
;
myExcel.Cells[i,
6
]
=
""
;
myExcel.Cells[i,
7
]
=
""
;
//
设置颜色,否则日期显示成"######"格式。
Range rCol10
=
(Range)myExcel.Cells[i,
10
];
rCol10
=
null
;
//
从1开始循环
j
++
;
i
++
;
}
myBook.Saved
=
true
;
myBook.SaveAs(DownloadFilePath,missing2,
""
,
""
,
false
,
false
,XlSaveAsAccessMode.xlNoChange,
1
,
false
,missing,missing,missing);
myBook.Close(
false
,
null
,
null
);
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myBook
=
null
;
myExcel
=
null
;
GC.Collect();
//
下载文件
HttpResponse response
=
HttpContext.Current.Response;
response.Clear();
response.WriteFile(DownloadFilePath);
string
httpHeader
=
"
attachment;filename=backup.Xls
"
;
response.AppendHeader(
"
Content-Disposition
"
, httpHeader);
response.Flush();
//
删除临时文件
System.IO.File.Delete(DownloadFilePath);
killExcelProcess();
}
catch
(Exception Ex)
{
throw
Ex;
}
}
/**/
///
<summary>
///
删除Excel进程
///
</summary>
private
void
killExcelProcess()
{
//
结束 Excel 进程
foreach
(System.Diagnostics.Process xlProcess
in
System.Diagnostics.Process.GetProcesses())
{
if
( xlProcess.ProcessName.ToUpper().Equals(
"
EXCEL
"
))
{
//
结束 excel 进程
xlProcess.Kill();
}
}
}
/**/
///
<summary>
///
构建临时DataTable
///
</summary>
///
<returns></returns>
private
System.Data.DataTable GetTable()
{
System.Data.DataTable dt
=
new
System.Data.DataTable();
dt.Columns.Add(
"
Name
"
);
dt.Columns.Add(
"
cost
"
);
dt.Columns.Add(
"
bug
"
);
DataRow rw
=
dt.NewRow();
rw[
"
Name
"
]
=
"
梁
"
;
rw[
"
Cost
"
]
=
"
12
"
;
rw[
"
bug
"
]
=
"
5
"
;
dt.Rows.Add(rw);
rw
=
dt.NewRow();
rw[
"
Name
"
]
=
"
李
"
;
rw[
"
Cost
"
]
=
"
15
"
;
rw[
"
bug
"
]
=
"
2
"
;
dt.Rows.Add(rw);
rw
=
dt.NewRow();
rw[
"
Name
"
]
=
"
王
"
;
rw[
"
Cost
"
]
=
"
8
"
;
rw[
"
bug
"
]
=
"
1
"
;
dt.Rows.Add(rw);
return
dt;
}
}
}
查看全文
相关阅读:
(转)游戏设备的三大未来趋势
(转)零基础学习 Hadoop 该如何下手?
(转)如何系统地学习数据挖掘?
(转)大数据最核心的价值是什么?
(转)面向对象编程的弊端是什么?
(转)处理器架构、指令集和汇编语言,三者有何关系?
(转)游戏界人士如何看待《征途》这款游戏?
(转)想从事游戏开发,1 年内能精通 C++ 吗,还需要学习什么?
(转)数据库老兵:NewSQL才是未来
(转)神舟飞船上的计算机使用什么操作系统,为什么是自研发不是 Linux?
原文地址:https://www.cnblogs.com/echo/p/161461.html
最新文章
VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)
C#//字节数组转16进制字符串
C# 字符串 输出格式 指定间隔 通用性很强
C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性
C# WinForm窗体及其控件的自适应
.Net 中读写Oracle数据库常用两种方式
oracle 连接字符串的问题
C# 取值函数
C# 串口通信
C#冒泡排序法
热门文章
ASP.NET MVC初识
递归查询树形结构的SQL
带扩展名的路由失效的问题
ASP.NET伪静态的方法及相关资料
ASP.NET(IIS)出现"没有为请求类型"GET"找到 HTTP 处理程序"
豆瓣网技术架构的 发展历程(一)
推荐13款javascript模板引擎
织梦解析模板之灵活应用视图类
YunCart电商网站支付宝接口出现500错误
《PDF.NE数据框架常见问题及解决方案-初》
Copyright © 2011-2022 走看看