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;
}
}
}
查看全文
相关阅读:
[Python] 登录人人网2011版
[WPF] 自定义窗体样式
[Python] 控制台输入密码的方法
[Python] 字符串加密解密
[WPF] 模仿AMD LIVE! EXPLORER界面
[Python] Visual Studio 2008 集成 IronPython 开发环境
mysql表类型(存储引擎)
logstash收集nginx访问日志
linux设置开机启动脚本
logstash安装log4j插件
原文地址:https://www.cnblogs.com/echo/p/161461.html
最新文章
整合
存储过程学习
windows server 2003,开关机提示框很烦人
令自己感动
Ubuntu系统下优化swap交换分区(图)
很酷的仿mac导航菜单
手机号码提示器 jquery不可行js可行
css为什么要清除浮动?
前端整理(一)
2015阿里前端工程师在线笔试整理
热门文章
ASP.NET 学习笔记(入门级)
LINQ
理解Cookie、Session和token机制,及其安全问题
spring (boot)使用log4j2实现slf4j日志门面
【汇总】Rocky Linux 8系统介绍、安装、配置、软件安装步骤
【解决】pip install 报错问题,如何正确设置代理
【解决】Rocky Linux 8.5 /var/log/secure文件不存在
【git】Gogs Gitea安装搭建教程,简单快速
fastjson整合到spring boot中
Clash for Windows使用经验
Copyright © 2011-2022 走看看