我正在从ColdFusion 9导出到Excel,我想设置页面方向和缩放,以便导出的Excel文档适合页面和打印格局。如何做到这一点?
使用解决方案进行编辑:
谢谢你的帮助。页面方向设置与广告一样有效
我使用以下hack来使其适合页面宽度。
此页面包含有关可能的各种设置的文档:
http://msdn.microsoft.com/en-us/library/Aa155477%28office.10%29.aspx
<cfheader name="Content-disposition" value="attachment;filename=export.xls">
<cfcontent type="application/application/vnd.ms-excel">
<!---
mso-page-orientation:landscape causes the exported excel spreadsheet to be printed landscape.
Setting Scale=45 causes the printout to fit to page width for me.
Per the documentation, I should be able to set
<x:Print><x:FitWidth>1</x:FitWidth><x:FitHeight>32767</x:FitHeight><x:ValidPrinterInfo/></x:Print>
but it doesn't want to work.
The width and height appear correctly in the Page Setup dialog, but the 'Adjust to' scale size
radio button remains selected instead of the 'Fit to' one page wide by 32767 tall radio button.
--->
<HTML xmlns:x="urn:schemas-microsoft-com:office:excel">
<HEAD>
<STYLE>
<!--table
@page {mso-page-orientation:landscape;}
-->
</STYLE>
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:WorksheetOptions>
<x:Print>
<x:ValidPrinterInfo/>
<x:Scale>45</x:Scale>
</x:Print>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
</x:ExcelWorkbook>
</xml><![endif]-->
</HEAD>
<BODY>
<cfoutput>
<cfloop from = "1" to = "#arrayLen(reportItems)#" index = "i">
<table cellpadding="1" cellspacing="1" bgcolor="dcdcdc" width="100%" border="1">
... table contents ...
</table>
</cfloop>
</cfoutput>
</BODY>
</HTML>
答案 0 :(得分:3)
<!--- get the underlying poi sheet --->
<cfset poiSheet = cfSheetObject.getWorkBook().getSheet("TheSheetName")>
<cfset ps = poiSheet.getPrintSetup()>
<cfset ps.setLandscape(true)>
<!--- fit to one page --->
<cfset ps.setFitHeight(1)>
<cfset ps.setFitWidth(1)>
答案 1 :(得分:1)
您可以使用此页面上记录的技巧:
How to format an Excel workbook while streaming MIME content
基本上,您输出要作为Excel电子表格打开的标准HTML数据表。您还必须为Excel指定mime-type,并且为了更好地衡量,我还想指定content-disposition标头以提示更好的下载文件名。
<cfcontent type="application/msexcel"/>
<cfheader name="content-disposition" value="attachment; filename=myFile.xls">
然后,您可以在上面的链接中找到特定格式问题的关键。您需要在MS Office特定的CSS规则<style>
中包含mso-page-orientation:landscape;
块。从那个链接:
<style>
<!--table
@page
{mso-header-data:"&CMultiplication Table\000ADate\: &D\000APage &P";
mso-page-orientation:landscape;}
br
{mso-data-placement:same-cell;}
-->
</style>
这应该处理页面方向问题。有一点需要注意 - Office 2007和更新版本会在打开此文件时警告用户不同的内容类型。这只是一个烦恼(可以通过注册表更新禁用);一切都将继续工作,并根据需要运作。
答案 2 :(得分:0)
我在cfspreadsheet标签中看不到任何要完成此操作的属性。来自adobe网站:
<cfspreadsheet
action="write"
filename = "filepath"
format = "csv"
name = "text"
overwrite = "true | false"
password = "password"
query = "queryname"
sheetname = "text"
>
使用打印范围或类似内容在Excel中导出后,您可能必须这样做。
让CF管理导出正确的数据,让Excel处理格式化/打印。