ASP.NET下Excel界面输出控制
2010-11-08 16:46
363 查看
访问Excel的方式有多种,开发中本人使用过两种方式:一种是基于Excel COM进行的访问,可以实现全方位控制,但这种方式适合桌面程序,另一种使用基于<Table>的格式化输出,这种可定适合Web开发,一下代码摘自别人的博客:
一、基于COM组件方式
asp教程.net 导出excel并设置格式
添加引用:microsoft excel 11.0 object library ;
添加:using microsoft.office.interop.excel;
一、打开excel文件============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.open(@"e:aaa.xls", type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing);
excel1.visible = true;
二、新建excel对象============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(xlwbatemplate.xlwbatworksheet或true);
worksheet1.activate();//激活sheet1表
excel1.visible = true;
三、新建excel表============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet worksheet1 =(worksheet)workbook1.worksheets.add(type.missing,workbook1.worksheets[1], 1, type.missing);
excel1.visible = true;
四、重命名excel表名============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"或1];
worksheet1.name = "工作计划表";
excel1.visible = true;
五、设置或修改excel表单元格内容========================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet1.cells[1, 1] = "姓名";
worksheet1.cells[1, 2] = "性别";
excel1.visible = true;
六、设置excel表行宽和列高===========================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet1.columns.columnwidth = 20;//全局行宽
worksheet1.columns.rowheight = 20;//全局列高
range range1 = (range) worksheet1.cells[2, 1];
range1.columns.columnwidth = 40;//单元格行宽
range1.columns.rowheight = 40;//单元格列高
excel1.visible = true;
七、设置excel表单元格边框===========================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
range range1 = (range)worksheet1.cells[2, 2];
range1.borders.color = system.drawing.colortranslator.toole(color.red);
range1.borders.get_item(xlbordersindex.xledgetop).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgeright).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgebottom).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgeleft).linestyle = xllinestyle.xlcontinuous;
//也可用后面的代码代替上面四项range1.borderaround(xllinestyle.xlcontinuous, xlborderweight.xlthin, xlcolorindex.xlcolorindexautomatic,null);
range1.borders.get_item(xlbordersindex.xldiagonaldown).linestyle = xllinestyle.xlcontinuous;//斜杠
range1.borders.get_item(xlbordersindex.xldiagonalup).linestyle = xllinestyle.xlcontinuous;//反斜杠
range1.borders.get_item(xlbordersindex.xldiagonaldown).color = system.drawing.colortranslator.toole(color.gold);
excel1.visible = true;
八、excel表块操作============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
range range1 = worksheet1.get_range("a2", "e8");//选择操作块
range1.font.bold = true;//设置黑体
range1.font.size = 18;//设置字体大小
range1.font.name = "仿宋";//设置字体
range1.font.color = system.drawing.colortranslator.toole(color.blue);//设置字体颜色
range1.horizontalalignment = xlhalign.xlhaligncenter;//设置水平对齐方式
range1.verticalalignment = xlvalign.xlvaligncenter;//设置垂直对齐方式
range1.value2 = "123rn456";
range1.borders.get_item(xlbordersindex.xledgetop).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgeright).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgebottom).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgeleft).linestyle = xllinestyle.xlcontinuous;
//也可用后面的代码代替上面四项range1.borderaround(xllinestyle.xlcontinuous, xlborderweight.xlthin, xlcolorindex.xlcolorindexautomatic,null);
range1.borders.get_item(xlbordersindex.xlinsidehorizontal).linestyle = xllinestyle.xlcontinuous;//块内竖线
range1.borders.get_item(xlbordersindex.xlinsidevertical).linestyle = xllinestyle.xlcontinuous;//块内横线
excel1.visible = true;
九、excel表单元格合并============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
range range1 = worksheet1.get_range("a2", "e8");//选择操作块
range1.value2 = "123rn456";
excel1.application.displayalerts = false;//使合并操作不提示警告信息
range1.merge(false);//参数为true则为每一行合并为一个单元格
excel1.application.displayalerts = true;
excel1.visible = true;
十、复制excel表============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet1.cells[1, 1] = "123";
worksheet1.copy(type.missing, worksheet1);
worksheet worksheet2 =(worksheet)worksheet1.next;
//worksheet2.name = "sheet2";
excel1.visible = true;
十一、页面设置============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
excel1.caption = "我的报表";
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet1.pagesetup.papersize = xlpapersize.xlpapera3;//纸张大小
worksheet1.pagesetup.printtitlerows = "$1:$3";//顶端标题行
worksheet1.pagesetup.orientation = xlpageorientation.xllandscape;//页面方向为横向
worksheet1.pagesetup.topmargin = excel1.centimeterstopoints(2);//上边距为2厘米(厘米转像素)
worksheet1.pagesetup.bottommargin = excel1.centimeterstopoints(2);//下边距为2厘米(厘米转像素)
worksheet1.pagesetup.leftmargin = excel1.centimeterstopoints(1.5);//左边距为1.5厘米(厘米转像素)
worksheet1.pagesetup.rightmargin = excel1.centimeterstopoints(1.5);//右边距为1.5厘米(厘米转像素)
worksheet1.pagesetup.headermargin = excel1.centimeterstopoints(1.2);//页眉边距为1.2厘米(厘米转像素)
worksheet1.pagesetup.footermargin = excel1.centimeterstopoints(1);//页脚边距为1厘米(厘米转像素)
worksheet1.pagesetup.centerhorizontally = true;//页面水平居中
worksheet1.pagesetup.centervertically = false;//页面不垂直居中
worksheet1.pagesetup.centerfooter = "第&p页,共&n页";//中间页脚内容
excel1.visible = true;
二、基于<Table>格式化输出
以下function可以傳入DataTable後輕易的做到Excel下載的功能,主要是透過<Table>的方式來配置每個欄位,因此只要Html Table可以做到的設定,這個function可以做的出來喔:
01
/**////
<summary>
02
///
傳入DataTable後,透過Response.Write將資料寫到client端,並指定為Excel格式
03
/// </summary>
04
///
<param name="pDataTable">資料來源</param>
05
public
void ExportDataTableToExcel(DataTable pDataTable)
06
...{
07
int
tRowCount = pDataTable.Rows.Count;
08
int
tColumnCount = pDataTable.Columns.Count;
09
10
Response.Expires = 0;
11
Response.Clear();
12
Response.Buffer =
true;
13
Response.Charset =
"utf-8";
14
Response.ContentEncoding = System.Text.Encoding.UTF8;
15
Response.ContentType =
"application/vnd.ms-excel";
16
Response.AddHeader("Content-Disposition",
"attachment; filename=Excel.xls");
17
Response.Write("<meta http-equiv=Content-Type
content=text/html;charset=utf-8>");
18
19
Response.Write("<Table borderColor=black border=1>");
20
Response.Write("/n <TR>");
21
for (int
i = 0; i < tColumnCount; i++)
22
...{
23
Response.Write("/n <TD bgcolor = #fff8dc>");
24
Response.Write(pDataTable.Columns[i].ColumnName);
25
Response.Write("/n </TD>");
26
}
27
Response.Write("/n </TR>");
28
for (int
j = 0; j < tRowCount; j++)
29
...{
30
Response.Write("/n <TR>");
31
for (int
k = 0; k < tColumnCount; k++)
32
...{
33
Response.Write("/n <TD align=/"right/"
x:num>");
34
Response.Write(pDataTable.Rows[j][k].ToString());
35
Response.Write("/n </TD>");
36
}
37
Response.Write("/n </TR>");
38
}
39
40
Response.Write("</Table>");
41
42
Response.End();
43
}
拿Northwind的Products資料表簡單的測試一下,發現果然如我們所預期,將Products整個Table的資料都匯出來囉:
也可以做欄位加總:
但我們發現UnitPrice這個欄位所存的值跟資料庫的值有所差異,資料庫中設定是小數位數4位,但匯出後小數點後的數值都不見了,如果我們要保留UnitPrice的小數點位數該怎麼做呢?
Step1.先取得欄位的schema小數位數,透過以下的SQL指令可取得Products欄位的schema
SELECT xprec,xscale,name
AS ColumnName, type_name(xusertype)
AS ColumnType
FROM syscolumns
WHERE (id = (SELECT objid=id
FROM sysobjects
WHERE id=object_id('Products')))
看到UnitPrice這個欄位是小數點四位數,接著小改一下前面的code:
01
/**////
<summary>
02
///
傳入DataTable後,透過Response.Write將資料寫到client端,並指定為Excel格式
03
/// </summary>
04
///
<param name="pDataTable">資料來源</param>
05
public
void ExportDataTableToExcel(DataTable pDataTable)
06
...{
07
int
tRowCount = pDataTable.Rows.Count;
08
int
tColumnCount = pDataTable.Columns.Count;
09
10
Response.Expires = 0;
11
Response.Clear();
12
Response.Buffer =
true;
13
Response.Charset =
"utf-8";
14
Response.ContentEncoding = System.Text.Encoding.UTF8;
15
Response.ContentType =
"application/vnd.ms-excel";
16
Response.AddHeader("Content-Disposition",
"attachment; filename=Excel.xls");
17
Response.Write("<meta http-equiv=Content-Type
content=text/html;charset=utf-8>");
18
19
Response.Write("<Table borderColor=black border=1>");
20
Response.Write("/n <TR>");
21
for (int
i = 0; i < tColumnCount; i++)
22
...{
23
Response.Write("/n <TD bgcolor = #fff8dc>");
24
Response.Write(pDataTable.Columns[i].ColumnName);
25
Response.Write("/n </TD>");
26
}
27
Response.Write("/n </TR>");
28
for (int
j = 0; j < tRowCount; j++)
29
...{
30
Response.Write("/n <TR>");
31
for (int
k = 0; k < tColumnCount; k++)
32
...{
33
//如果是UnitPrice的話就補滿小數位數,小數位數部分可透過取得欄位的xscale來取得
34
if (pDataTable.Columns[k].ColumnName
== "UnitPrice")
35
...{
36
Response.Write("/n<TD style='mso-number-format:/"0//."
+ "0".PadLeft(4, '0') +
"/";'>");
37
}
38
else
39
...{
40
Response.Write("/n <TD align=/"right/"
x:num>");
41
}
42
Response.Write(pDataTable.Rows[j][k].ToString());
43
Response.Write("/n </TD>");
44
}
45
Response.Write("/n </TR>");
46
}
47
48
Response.Write("</Table>");
49
50
Response.End();
51
}
再匯出一次,我們發現UnitPrice欄位的小數位數出來囉,
這個方法或許不是最快的,但用到現在我覺得他彈性算是最大的,因為格式、顏色都可以自行定義
一、基于COM组件方式
asp教程.net 导出excel并设置格式
添加引用:microsoft excel 11.0 object library ;
添加:using microsoft.office.interop.excel;
一、打开excel文件============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.open(@"e:aaa.xls", type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing, type.missing);
excel1.visible = true;
二、新建excel对象============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(xlwbatemplate.xlwbatworksheet或true);
worksheet1.activate();//激活sheet1表
excel1.visible = true;
三、新建excel表============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet worksheet1 =(worksheet)workbook1.worksheets.add(type.missing,workbook1.worksheets[1], 1, type.missing);
excel1.visible = true;
四、重命名excel表名============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"或1];
worksheet1.name = "工作计划表";
excel1.visible = true;
五、设置或修改excel表单元格内容========================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet1.cells[1, 1] = "姓名";
worksheet1.cells[1, 2] = "性别";
excel1.visible = true;
六、设置excel表行宽和列高===========================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet1.columns.columnwidth = 20;//全局行宽
worksheet1.columns.rowheight = 20;//全局列高
range range1 = (range) worksheet1.cells[2, 1];
range1.columns.columnwidth = 40;//单元格行宽
range1.columns.rowheight = 40;//单元格列高
excel1.visible = true;
七、设置excel表单元格边框===========================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
range range1 = (range)worksheet1.cells[2, 2];
range1.borders.color = system.drawing.colortranslator.toole(color.red);
range1.borders.get_item(xlbordersindex.xledgetop).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgeright).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgebottom).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgeleft).linestyle = xllinestyle.xlcontinuous;
//也可用后面的代码代替上面四项range1.borderaround(xllinestyle.xlcontinuous, xlborderweight.xlthin, xlcolorindex.xlcolorindexautomatic,null);
range1.borders.get_item(xlbordersindex.xldiagonaldown).linestyle = xllinestyle.xlcontinuous;//斜杠
range1.borders.get_item(xlbordersindex.xldiagonalup).linestyle = xllinestyle.xlcontinuous;//反斜杠
range1.borders.get_item(xlbordersindex.xldiagonaldown).color = system.drawing.colortranslator.toole(color.gold);
excel1.visible = true;
八、excel表块操作============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
range range1 = worksheet1.get_range("a2", "e8");//选择操作块
range1.font.bold = true;//设置黑体
range1.font.size = 18;//设置字体大小
range1.font.name = "仿宋";//设置字体
range1.font.color = system.drawing.colortranslator.toole(color.blue);//设置字体颜色
range1.horizontalalignment = xlhalign.xlhaligncenter;//设置水平对齐方式
range1.verticalalignment = xlvalign.xlvaligncenter;//设置垂直对齐方式
range1.value2 = "123rn456";
range1.borders.get_item(xlbordersindex.xledgetop).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgeright).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgebottom).linestyle = xllinestyle.xlcontinuous;
range1.borders.get_item(xlbordersindex.xledgeleft).linestyle = xllinestyle.xlcontinuous;
//也可用后面的代码代替上面四项range1.borderaround(xllinestyle.xlcontinuous, xlborderweight.xlthin, xlcolorindex.xlcolorindexautomatic,null);
range1.borders.get_item(xlbordersindex.xlinsidehorizontal).linestyle = xllinestyle.xlcontinuous;//块内竖线
range1.borders.get_item(xlbordersindex.xlinsidevertical).linestyle = xllinestyle.xlcontinuous;//块内横线
excel1.visible = true;
九、excel表单元格合并============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
range range1 = worksheet1.get_range("a2", "e8");//选择操作块
range1.value2 = "123rn456";
excel1.application.displayalerts = false;//使合并操作不提示警告信息
range1.merge(false);//参数为true则为每一行合并为一个单元格
excel1.application.displayalerts = true;
excel1.visible = true;
十、复制excel表============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet1.cells[1, 1] = "123";
worksheet1.copy(type.missing, worksheet1);
worksheet worksheet2 =(worksheet)worksheet1.next;
//worksheet2.name = "sheet2";
excel1.visible = true;
十一、页面设置============================
microsoft.office.interop.excel.application excel1 = new microsoft.office.interop.excel.application();
workbook workbook1 = excel1.workbooks.add(true);
excel1.caption = "我的报表";
worksheet worksheet1 = (worksheet)workbook1.worksheets["sheet1"];
worksheet1.pagesetup.papersize = xlpapersize.xlpapera3;//纸张大小
worksheet1.pagesetup.printtitlerows = "$1:$3";//顶端标题行
worksheet1.pagesetup.orientation = xlpageorientation.xllandscape;//页面方向为横向
worksheet1.pagesetup.topmargin = excel1.centimeterstopoints(2);//上边距为2厘米(厘米转像素)
worksheet1.pagesetup.bottommargin = excel1.centimeterstopoints(2);//下边距为2厘米(厘米转像素)
worksheet1.pagesetup.leftmargin = excel1.centimeterstopoints(1.5);//左边距为1.5厘米(厘米转像素)
worksheet1.pagesetup.rightmargin = excel1.centimeterstopoints(1.5);//右边距为1.5厘米(厘米转像素)
worksheet1.pagesetup.headermargin = excel1.centimeterstopoints(1.2);//页眉边距为1.2厘米(厘米转像素)
worksheet1.pagesetup.footermargin = excel1.centimeterstopoints(1);//页脚边距为1厘米(厘米转像素)
worksheet1.pagesetup.centerhorizontally = true;//页面水平居中
worksheet1.pagesetup.centervertically = false;//页面不垂直居中
worksheet1.pagesetup.centerfooter = "第&p页,共&n页";//中间页脚内容
excel1.visible = true;
二、基于<Table>格式化输出
以下function可以傳入DataTable後輕易的做到Excel下載的功能,主要是透過<Table>的方式來配置每個欄位,因此只要Html Table可以做到的設定,這個function可以做的出來喔:
01
/**////
<summary>
02
///
傳入DataTable後,透過Response.Write將資料寫到client端,並指定為Excel格式
03
/// </summary>
04
///
<param name="pDataTable">資料來源</param>
05
public
void ExportDataTableToExcel(DataTable pDataTable)
06
...{
07
int
tRowCount = pDataTable.Rows.Count;
08
int
tColumnCount = pDataTable.Columns.Count;
09
10
Response.Expires = 0;
11
Response.Clear();
12
Response.Buffer =
true;
13
Response.Charset =
"utf-8";
14
Response.ContentEncoding = System.Text.Encoding.UTF8;
15
Response.ContentType =
"application/vnd.ms-excel";
16
Response.AddHeader("Content-Disposition",
"attachment; filename=Excel.xls");
17
Response.Write("<meta http-equiv=Content-Type
content=text/html;charset=utf-8>");
18
19
Response.Write("<Table borderColor=black border=1>");
20
Response.Write("/n <TR>");
21
for (int
i = 0; i < tColumnCount; i++)
22
...{
23
Response.Write("/n <TD bgcolor = #fff8dc>");
24
Response.Write(pDataTable.Columns[i].ColumnName);
25
Response.Write("/n </TD>");
26
}
27
Response.Write("/n </TR>");
28
for (int
j = 0; j < tRowCount; j++)
29
...{
30
Response.Write("/n <TR>");
31
for (int
k = 0; k < tColumnCount; k++)
32
...{
33
Response.Write("/n <TD align=/"right/"
x:num>");
34
Response.Write(pDataTable.Rows[j][k].ToString());
35
Response.Write("/n </TD>");
36
}
37
Response.Write("/n </TR>");
38
}
39
40
Response.Write("</Table>");
41
42
Response.End();
43
}
拿Northwind的Products資料表簡單的測試一下,發現果然如我們所預期,將Products整個Table的資料都匯出來囉:
也可以做欄位加總:
但我們發現UnitPrice這個欄位所存的值跟資料庫的值有所差異,資料庫中設定是小數位數4位,但匯出後小數點後的數值都不見了,如果我們要保留UnitPrice的小數點位數該怎麼做呢?
Step1.先取得欄位的schema小數位數,透過以下的SQL指令可取得Products欄位的schema
SELECT xprec,xscale,name
AS ColumnName, type_name(xusertype)
AS ColumnType
FROM syscolumns
WHERE (id = (SELECT objid=id
FROM sysobjects
WHERE id=object_id('Products')))
看到UnitPrice這個欄位是小數點四位數,接著小改一下前面的code:
01
/**////
<summary>
02
///
傳入DataTable後,透過Response.Write將資料寫到client端,並指定為Excel格式
03
/// </summary>
04
///
<param name="pDataTable">資料來源</param>
05
public
void ExportDataTableToExcel(DataTable pDataTable)
06
...{
07
int
tRowCount = pDataTable.Rows.Count;
08
int
tColumnCount = pDataTable.Columns.Count;
09
10
Response.Expires = 0;
11
Response.Clear();
12
Response.Buffer =
true;
13
Response.Charset =
"utf-8";
14
Response.ContentEncoding = System.Text.Encoding.UTF8;
15
Response.ContentType =
"application/vnd.ms-excel";
16
Response.AddHeader("Content-Disposition",
"attachment; filename=Excel.xls");
17
Response.Write("<meta http-equiv=Content-Type
content=text/html;charset=utf-8>");
18
19
Response.Write("<Table borderColor=black border=1>");
20
Response.Write("/n <TR>");
21
for (int
i = 0; i < tColumnCount; i++)
22
...{
23
Response.Write("/n <TD bgcolor = #fff8dc>");
24
Response.Write(pDataTable.Columns[i].ColumnName);
25
Response.Write("/n </TD>");
26
}
27
Response.Write("/n </TR>");
28
for (int
j = 0; j < tRowCount; j++)
29
...{
30
Response.Write("/n <TR>");
31
for (int
k = 0; k < tColumnCount; k++)
32
...{
33
//如果是UnitPrice的話就補滿小數位數,小數位數部分可透過取得欄位的xscale來取得
34
if (pDataTable.Columns[k].ColumnName
== "UnitPrice")
35
...{
36
Response.Write("/n<TD style='mso-number-format:/"0//."
+ "0".PadLeft(4, '0') +
"/";'>");
37
}
38
else
39
...{
40
Response.Write("/n <TD align=/"right/"
x:num>");
41
}
42
Response.Write(pDataTable.Rows[j][k].ToString());
43
Response.Write("/n </TD>");
44
}
45
Response.Write("/n </TR>");
46
}
47
48
Response.Write("</Table>");
49
50
Response.End();
51
}
再匯出一次,我們發現UnitPrice欄位的小數位數出來囉,
這個方法或許不是最快的,但用到現在我覺得他彈性算是最大的,因為格式、顏色都可以自行定義
相关文章推荐
- ASP.NET下Excel界面输出控制
- ASP.NET下Excel界面输出控制
- Asp.Net中应用Aspose.Cells输出报表到Excel 及样式设置
- ASP.NET中将数据输出到Excel
- Asp.Net页面输出到EXCEL
- ASP.NET中将数据输出到Excel,TXT, Word, Html
- 在ASP.NET中将数据直接输出成Excel内容
- ASP.NET中读取Excel内容,并显示在界面上
- Asp.net页面输出到EXCEL
- asp.net数据集内容输出到excel,并生成CHART图
- 用asp.net调用excel并输出的一点经验
- Asp.net控制输出到客户端的Html
- asp.net控制Excel----弹出打开下载框
- Asp.net页面输出到EXCEL
- 在ASP.NET中将数据直接输出成Excel格式
- ASP.NET控制Word/EXCEL转换成PDF格式
- Asp.net导出Excel(HTML输出方法)
- 声明的方式控制ASP.NET输出缓存策略
- ASP.NET控制EXCEL,完全结束进程
- Asp.net利用ExcelLibrary输出EXCEL