ColdFusion中导出Excel文件
+---------------------------------------------------------+
+ 以下内容为本人原创,共享以赏读者,转帖时请保留该信息 +
+ yeyanbo ye.yanbo@gmail.com +
+---------------------------------------------------------+
要想将页面的内容导出到Excel文件,用于保存备份或者是排版打印.在ColdFusion中可以通过2种方式来解决.
1. 简单方式
此种方式适合于简单页面,不能在Excel中形成多Sheet格式, 无排版.
我们先举个例子,以例子来说明这个方式的几个重点.
<cfprocessingdirective suppresswhitespace="yes">
<cfquery name="PRSList" datasource="PRS">
SELECT * FROM PRS;
</cfquery>
<cfsetting enablecfoutputonly="yes">
<cfset tabchar="Chr(9)">
<cfset newline="Chr(13)&Chr(10)">
<cfsavecontent variable="theFileContent">
<cfloop query="PRSList">
<cfoutput>
#PRSList.PRID##TabChar#
#PRSList.Title##TabChar#
#PRSList.Name##TabChar#
#DateFormat(PRSList.ModifyTime,"yyyy-mm-dd")##NewLine#
</cfoutput>
</cfloop>
</cfsavecontent>
<cfheader name="Content-Disposition" value="attachment;filename=prs.xls">
<cfcontent type="application/vnd.ms-excel; charset=gb2312" variable="#ToBinary(ToBase64(theFileContent," reset="no">
</cfprocessingdirective>
我已经用不同的颜色来区分出来几个设计时候的重点了:
A> 这个是必须的, 它可以去除多余的空白字符.
<cfprocessingdirective suppresswhitespace="yes">
B 这个设置内容可以输出,并定义了2个特殊字符:TAB符号和换行符号.
<cfsetting enablecfoutputonly="yes">
<cfset tabchar="Chr(9)">
<cfset newline="Chr(13)&Chr(10)">
C 绿色的区域指定了要输出到Excel文件中的内容,并以变量variable="theFileContent"来保存.
D 红色部分是固定格式内容, 我们可以在这里设置缺省的存储文件名filename=prs.xls.
2. 复杂方式
如果你要求的格式比较复杂,又排版需求,那么就只能采用这种方式了.
我们必须要通过Excel.Application组件来进行设计.下面我来介绍一下如何在ColdFusion中操作Excel组件.
<cfscrīpt>
//创建组件实例
objExcel = CreateObject("COM", "Excel.Application");
//获取WorkBook, 也就是我们理解中的Excel文件.
objWorkBook = objExcel.WorkBooks.Add();
//获取WorkSheet,可以由2种方式.
objWorkSheet = objWorkBook.WorkSheets.add();
objWorkSheet = objWorkBook.WorkSheets.item("sheet1");
//设置列宽,行高,对齐方式
objWorkSheet.Columns.AutoFit();
objWorkSheet.Columns.item("A:I").HorizontalAlignment = 3;
objWorkSheet.Columns.item("A:I").VerticalAlignment = 2;
objWorkSheet.Columns.item("A:I").ColumnWidth = 10;
objWorkSheet.Rows.item("1:10").RowHeight = 100;
//在第10行之前插入分页符, 删除时参数值为0
objWorkSheet.Rows.item("10").PageBreak = 1;
//获取单元格.
objRange = objWorkSheet.Range("A1:A1");
//设置单元格的宽度
objRange.ColumnWidth = 4.00;
//设置单元格的字体
objF = objRange.Font;
objF.Name = "黑体";
objF.Size = 16;
objF.Bold = True;
//设置单元格的对齐格式
objRange.HorizontalAlignment = 1;
objRange.VerticalAlignment = 1;
//设置单元格的回行
objRange.WrapText = True;
//设置单元格的收缩
objRange.ShrinkToFit = True;
//设置单元格的格式,@=文本显示,日期的可以是"yyyy-mm-dd"
objRange.NumberFormatLocal = "@";
//设置单元格的值
//objRange.value = "TEST";
//设置单元格的颜色
objI = objRange.Interior;
objI.ColorIndex = 6;
//设置单元格的边框, 不带item属性代表所有的边框
objLine = objRange.Borders;
//Borders参数: 1-左, 2-右, 3-顶, 4-底, 5-斜\, 6-斜/
objLine = objRange.Borders.item("5");
//LineStyle参数: 1 7-实线, 2-虚线, 4-点虚线, 9-双细实线
objLine.LineStyle = 2;
//合并单元格
objRange = objWorkSheet.Range("A2:C2");
objRange.MergeCells = true;
//可以对合并之后的单元格进行操作
objLine = objRange.Borders;
objLine.LineStyle = 9;
//定义打印时候的页头, 其中&30表示字体的大小,可更改
//CenterHeader可以替换为LeftHeader, RightHeader
objWorkSheet.PageSetup.CenterHeader = "打印的表头";
objWorkSheet.PageSetup.CenterHeader = "&30打印的表头";
//定义打印时候的页脚, 其中&20表示字体的大小,可更改
//CenterFooter可以替换为LeftFooter, RightFooter
objWorkSheet.PageSetup.CenterFooter = "第&P页";
objWorkSheet.PageSetup.CenterFooter = "&20第&P页";
//设置边距, 分子表示xx厘米
objWorkSheet.PageSetup.HeaderMargin = 2/0.035;
objWorkSheet.PageSetup.FooterMargin = 3/0.035;
objWorkSheet.PageSetup.TopMargin = 2/0.035;
objWorkSheet.PageSetup.BottomMargin = 4/0.035;
objWorkSheet.PageSetup.LeftMargin = 2/0.035;
objWorkSheet.PageSetup.RightMargin = 2/0.035;
//保存
objWorkSheet.SaveAs("c:\error_log.xls");
//关闭
objWorkBook.Close();
//释放
objExcel.Quit();
objExcel = "Nothing";
参考资料:
VFP全面控制EXCEL - 十豆三 的专栏
+ 以下内容为本人原创,共享以赏读者,转帖时请保留该信息 +
+ yeyanbo ye.yanbo@gmail.com +
+---------------------------------------------------------+
要想将页面的内容导出到Excel文件,用于保存备份或者是排版打印.在ColdFusion中可以通过2种方式来解决.
1. 简单方式
此种方式适合于简单页面,不能在Excel中形成多Sheet格式, 无排版.
我们先举个例子,以例子来说明这个方式的几个重点.
<cfprocessingdirective suppresswhitespace="yes">
<cfquery name="PRSList" datasource="PRS">
SELECT * FROM PRS;
</cfquery>
<cfsetting enablecfoutputonly="yes">
<cfset tabchar="Chr(9)">
<cfset newline="Chr(13)&Chr(10)">
<cfsavecontent variable="theFileContent">
<cfloop query="PRSList">
<cfoutput>
#PRSList.PRID##TabChar#
#PRSList.Title##TabChar#
#PRSList.Name##TabChar#
#DateFormat(PRSList.ModifyTime,"yyyy-mm-dd")##NewLine#
</cfoutput>
</cfloop>
</cfsavecontent>
<cfheader name="Content-Disposition" value="attachment;filename=prs.xls">
<cfcontent type="application/vnd.ms-excel; charset=gb2312" variable="#ToBinary(ToBase64(theFileContent," reset="no">
</cfprocessingdirective>
我已经用不同的颜色来区分出来几个设计时候的重点了:
A> 这个是必须的, 它可以去除多余的空白字符.
<cfprocessingdirective suppresswhitespace="yes">
B 这个设置内容可以输出,并定义了2个特殊字符:TAB符号和换行符号.
<cfsetting enablecfoutputonly="yes">
<cfset tabchar="Chr(9)">
<cfset newline="Chr(13)&Chr(10)">
C 绿色的区域指定了要输出到Excel文件中的内容,并以变量variable="theFileContent"来保存.
D 红色部分是固定格式内容, 我们可以在这里设置缺省的存储文件名filename=prs.xls.
2. 复杂方式
如果你要求的格式比较复杂,又排版需求,那么就只能采用这种方式了.
我们必须要通过Excel.Application组件来进行设计.下面我来介绍一下如何在ColdFusion中操作Excel组件.
<cfscrīpt>
//创建组件实例
objExcel = CreateObject("COM", "Excel.Application");
//获取WorkBook, 也就是我们理解中的Excel文件.
objWorkBook = objExcel.WorkBooks.Add();
//获取WorkSheet,可以由2种方式.
objWorkSheet = objWorkBook.WorkSheets.add();
objWorkSheet = objWorkBook.WorkSheets.item("sheet1");
//设置列宽,行高,对齐方式
objWorkSheet.Columns.AutoFit();
objWorkSheet.Columns.item("A:I").HorizontalAlignment = 3;
objWorkSheet.Columns.item("A:I").VerticalAlignment = 2;
objWorkSheet.Columns.item("A:I").ColumnWidth = 10;
objWorkSheet.Rows.item("1:10").RowHeight = 100;
//在第10行之前插入分页符, 删除时参数值为0
objWorkSheet.Rows.item("10").PageBreak = 1;
//获取单元格.
objRange = objWorkSheet.Range("A1:A1");
//设置单元格的宽度
objRange.ColumnWidth = 4.00;
//设置单元格的字体
objF = objRange.Font;
objF.Name = "黑体";
objF.Size = 16;
objF.Bold = True;
//设置单元格的对齐格式
objRange.HorizontalAlignment = 1;
objRange.VerticalAlignment = 1;
//设置单元格的回行
objRange.WrapText = True;
//设置单元格的收缩
objRange.ShrinkToFit = True;
//设置单元格的格式,@=文本显示,日期的可以是"yyyy-mm-dd"
objRange.NumberFormatLocal = "@";
//设置单元格的值
//objRange.value = "TEST";
//设置单元格的颜色
objI = objRange.Interior;
objI.ColorIndex = 6;
//设置单元格的边框, 不带item属性代表所有的边框
objLine = objRange.Borders;
//Borders参数: 1-左, 2-右, 3-顶, 4-底, 5-斜\, 6-斜/
objLine = objRange.Borders.item("5");
//LineStyle参数: 1 7-实线, 2-虚线, 4-点虚线, 9-双细实线
objLine.LineStyle = 2;
//合并单元格
objRange = objWorkSheet.Range("A2:C2");
objRange.MergeCells = true;
//可以对合并之后的单元格进行操作
objLine = objRange.Borders;
objLine.LineStyle = 9;
//定义打印时候的页头, 其中&30表示字体的大小,可更改
//CenterHeader可以替换为LeftHeader, RightHeader
objWorkSheet.PageSetup.CenterHeader = "打印的表头";
objWorkSheet.PageSetup.CenterHeader = "&30打印的表头";
//定义打印时候的页脚, 其中&20表示字体的大小,可更改
//CenterFooter可以替换为LeftFooter, RightFooter
objWorkSheet.PageSetup.CenterFooter = "第&P页";
objWorkSheet.PageSetup.CenterFooter = "&20第&P页";
//设置边距, 分子表示xx厘米
objWorkSheet.PageSetup.HeaderMargin = 2/0.035;
objWorkSheet.PageSetup.FooterMargin = 3/0.035;
objWorkSheet.PageSetup.TopMargin = 2/0.035;
objWorkSheet.PageSetup.BottomMargin = 4/0.035;
objWorkSheet.PageSetup.LeftMargin = 2/0.035;
objWorkSheet.PageSetup.RightMargin = 2/0.035;
//保存
objWorkSheet.SaveAs("c:\error_log.xls");
//关闭
objWorkBook.Close();
//释放
objExcel.Quit();
objExcel = "Nothing";
参考资料:
VFP全面控制EXCEL - 十豆三 的专栏
评论
发表评论