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;
}
}
}
查看全文
相关阅读:
java学习笔记----数据类型,变量,常量
java学习笔记 --- java基础语法
java学习笔记----java入门
python 类方法
nginx 限制ip/限制访问路径
python 异常处理
python 内置模块
python 模块与包
python函数基础用法
python函数高级运用
原文地址:https://www.cnblogs.com/echo/p/161461.html
最新文章
生产者-消费者 用阻塞队列实现
生产者-消费者 用非阻塞队列、Object.wait()、Object.notify()实现
Servlet中的过滤器Filter详解
java内存分配和String类型的深度解析
javascript 内置对象及常见API
进阶正则表达式
英语单词
JNDI全面总结
深入分析 Java 中的中文编码问题
字符在内存中最终的表示形式是什么?是某种字符编码还是码位(Code Point)?
热门文章
全局变量存放在哪里?
先有Class还是先有Object?
随机手机号和身份证号码(python)
手机测试用例-STK测试用例
手机测试用例-wap测试用例
java学习笔记 --- 面向对象
java学习笔记 --- 数组
java学习笔记 --- 方法
java学习笔记 --- 条件,循环语句
java学习笔记----运算符
Copyright © 2011-2022 走看看