用perl生成带格式的excel(跨平台)
2011-07-09 16:07
302 查看
本文介绍如何用perl生成excel,而且excel的样式可以自己事先设计好,不需要在windows下生成。
1.创建一个模板excel
新建一个test.xls文件,打开
自己设计样式如下:
2.把test.xls另存为xml表格 test.xml
3.用文本编辑器打开test.xml,我要介绍要用代码操作的地方
4.代码操作完后的结果,注意生成完后的文件的后缀必须改为.xls,这样就可以用excel直接打开了,只要有了模板excel之后,就可以在linux下把文件生成了。
5.代码,下面的代码使用时,注意:若是不是在web下使用,请把第1,2个print注释掉。使用时需要把代码保存为UTF-8格式,下面的m***cel="ms"+"excel",至于为什么,你懂的
本文出自 “一方有” 博客,请务必保留此出处http://yifangyou.blog.51cto.com/900206/607077
1.创建一个模板excel
新建一个test.xls文件,打开
自己设计样式如下:
2.把test.xls另存为xml表格 test.xml
3.用文本编辑器打开test.xml,我要介绍要用代码操作的地方
4.代码操作完后的结果,注意生成完后的文件的后缀必须改为.xls,这样就可以用excel直接打开了,只要有了模板excel之后,就可以在linux下把文件生成了。
5.代码,下面的代码使用时,注意:若是不是在web下使用,请把第1,2个print注释掉。使用时需要把代码保存为UTF-8格式,下面的m***cel="ms"+"excel",至于为什么,你懂的
my $filename="test.xls"; @data=([12,8,98],[9,16,99],[7,4,67],[2,64,99],[3,16,67],[1,64,78]); $RowCount=scalar(@data)+1; print "Content-type: Application/m***cel\n"; print "Content-Disposition: attachment; filename='$filename'\n\n"; #输出excel格式 print <<EOFEXCELHEAD; <?xml version="1.0"?> <?mso-application progid="Excel.Sheet"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> <Created>1996-12-17T01:32:42Z</Created> <LastSaved>2000-11-18T06:53:49Z</LastSaved> <Version>11.9999</Version> </DocumentProperties> <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> <RemovePersonalInformation/> </OfficeDocumentSettings> <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>4530</WindowHeight> <WindowWidth>8505</WindowWidth> <WindowTopX>480</WindowTopX> <WindowTopY>120</WindowTopY> <AcceptLabelsInFormulas/> <ProtectStructure>False</ProtectStructure> <ProtectWindows>False</ProtectWindows> </ExcelWorkbook> <Styles> <Style ss:ID="Default" ss:Name="Normal"> <Alignment ss:Vertical="Bottom"/> <Borders/> <Font ss:FontName="宋体" x:CharSet="134" ss:Size="12"/> <Interior/> <NumberFormat/> <Protection/> </Style> <Style ss:ID="s23"> <Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" ss:Color="#FFFFFF" ss:Bold="1"/> <Interior ss:Color="#000000" ss:Pattern="Solid"/> </Style> <Style ss:ID="s26"> <Borders> <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> </Borders> </Style> <Style ss:ID="s27"> <Borders> <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> </Borders> <Interior ss:Color="#CCFFCC" ss:Pattern="Solid"/> </Style> </Styles> <Worksheet ss:Name="Sheet1"> <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="$RowCount" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25"> <Column ss:AutoFitWidth="0" ss:Width="99.75"/> <Column ss:AutoFitWidth="0" ss:Width="82.5"/> <Column ss:AutoFitWidth="0" ss:Width="99"/> <Row> <Cell ss:StyleID="s23"><Data ss:Type="String">响应时间(ms)</Data></Cell> <Cell ss:StyleID="s23"><Data ss:Type="String">带宽(Mbps)</Data></Cell> <Cell ss:StyleID="s23"><Data ss:Type="String">成功率(%)</Data></Cell> </Row> EOFEXCELHEAD my $i=0; for$i(0..$#data){ if($i % 2 == 0){ print <<EOFROW <Row> <Cell ss:StyleID="s26"><Data ss:Type="Number">$data[$i][0]</Data></Cell> <Cell ss:StyleID="s26"><Data ss:Type="Number">$data[$i][1]</Data></Cell> <Cell ss:StyleID="s26"><Data ss:Type="Number">$data[$i][2]</Data></Cell> </Row> EOFROW }else{ print <<EOFROW <Row> <Cell ss:StyleID="s27"><Data ss:Type="Number">$data[$i][0]</Data></Cell> <Cell ss:StyleID="s27"><Data ss:Type="Number">$data[$i][1]</Data></Cell> <Cell ss:StyleID="s27"><Data ss:Type="Number">$data[$i][2]</Data></Cell> </Row> EOFROW } } print <<EOFEXCELTAIL; </Table> <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> <Print> <ValidPrinterInfo/> <PaperSizeIndex>9</PaperSizeIndex> <HorizontalResolution>300</HorizontalResolution> <VerticalResolution>300</VerticalResolution> </Print> <Selected/> <Panes> <Pane> <Number>3</Number> <ActiveRow>1</ActiveRow> </Pane> </Panes> <ProtectObjects>False</ProtectObjects> <ProtectScenarios>False</ProtectScenarios> </WorksheetOptions> </Worksheet> </Workbook> EOFEXCELTAIL
本文出自 “一方有” 博客,请务必保留此出处http://yifangyou.blog.51cto.com/900206/607077
相关文章推荐
- perl生成excel文档的格式设置
- 利用jsp生成excel格式文件
- Excel生成报表之解决方案--设置单个单元格格式
- 简单OA项目笔记(5):生成、下载excel格式的动态表格(POI)
- Java POI 生成Excel时显示货币格式,如: 23,332.00
- 用VBA生成的EXCEL,打开报如下错误:您尝试打开的文件"1.xls"的格式与文件拓展名指定的格式不一致。。。。
- Excel和Csv格式文件生成
- Java生成csv文件时,数字格式为“0001”,用excel打开时,变为“1”的解决方法
- 读取excel文件数据集,生成固定格式excel文件
- 如何在后台运行模式生成Excel格式文件
- 将DataGrid内容生成标准的Excel格式文件
- 利用jsp生成excel格式文件
- 如何在后台运行模式生成Excel格式文件(收藏)
- [原创.数据可视化系列之四]跨平台,多格式的等值线和等值面的生成
- 用Excel打开csv格式文件并生成相应图形
- Excel随机生成特定格式数据
- Excel格式报表生成—POI
- apache POI学习(三)——生成带格式的excel表格
- 生成Excel *.xls 生成 xls的格式与文件扩展名指定的格式不一致
- Java 根据固定格式的Excel生成实体类