perl读写Excel
2016-06-27 17:25
369 查看
最近学习了使用perl制作一个Excel文件,使用Spreadsheet模块写03版Excel时新建一个Excel文件。
在写Excel时,若需要合并某些行或某些列,需单独为其设置字体格式,不能使用未合并行和列的格式,否则会报以下错误。
Error: refer to merge_range() in the documentation.
Can’t use previously merged format in non-merged cell at XXXX.
写Excel结束时,需要关闭workbook,读Excel时则不需要。
更多方法可以使用命令perldoc Spreadsheet::WriteExcel 或 perldoc Spreadsheet::ParseExcel查看具体内容。
#!/usr/bin/perl -w use strict; use Spreadsheet::ParseExcel; use Spreadsheet::WriteExcel; use Spreadsheet::ParseExcel::FmtUnicode; ####读Excel my $parser = Spreadsheet::ParseExcel->new(); ##对Excel内中文字符进行字符编码指定,防止乱码 my $formatter = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map=>"CP936"); my $workbook = $parser->parse('hello.xls', $formatter); if(!defined $workbook){ die $parser->error(), "\n"; } for my $worksheet($workbook->worksheets()){ ##行号的最小值和最小值 my ($row_min, $row_max) = $worksheet->row_range(); ##列号的最小值和最大值 my ($col_min, $col_max) = $worksheet->col_range(); for my $row ($row_min..$row_max){ for my $col ($col_min..$col_max){ my $cell = $worksheet->get_cell($row, $col); next unless $cell; print "Value=", $cell->value(), "\n"; } } } ----------------------------------------------------------------------------------------- ####写Excel ##创建一个新的xls文件,该模块只能先新建后写,不能对已有文件进行修改 my $workbook = Spreadsheet::WriteExcel->new('newexcel.xls'); ##新建一个sheet,可以在括号内加入sheet名称,若不加,默认为sheet1 my $worksheet = $workbook->add_worksheet(); #设置表头字体格式 my $format_head = $workbook->add_format( ##为了避免字符串中数字使用原格式,使用@设置数字的默认格式同文字格式 num_format => '@', ##设置字体格式为黑体 font => decode("cp936", "黑体"), bold => 1, ##加粗 align => 'center', ##居中 border => 1 ##边界框线 ); #设置字体格式 my $format_1 = $workbook->add_format( num_format => '@', size => 10, font => decode("cp936", "宋体"), border => 1, align => 'center', ); ##设置数字格式 my $format_2 = $workbook->add_format( ##数字保留两位有效小数,0.00_下划线后必须加空格 num_format => '0.00_ ', size => 10, font => 'Arial', border => 1, align => 'center', ); ##此外还可以设置字体颜色,背景颜色等 ###设置每一列宽度 $worksheet->set_column('A:A', 20); $worksheet->set_column('B:B', 21); ##合并第一行AB列 $worksheet->merge_range('A1:B1', decode("cp936", "表格"), $format_head); $worksheet->write(1, 0, decode("cp936", "第一行"), $format_1); $worksheet->write('B2', 112, $format_2); ##关闭workbook $workbook->close();
在写Excel时,若需要合并某些行或某些列,需单独为其设置字体格式,不能使用未合并行和列的格式,否则会报以下错误。
Error: refer to merge_range() in the documentation.
Can’t use previously merged format in non-merged cell at XXXX.
写Excel结束时,需要关闭workbook,读Excel时则不需要。
更多方法可以使用命令perldoc Spreadsheet::WriteExcel 或 perldoc Spreadsheet::ParseExcel查看具体内容。
相关文章推荐
- 使用Python生成Excel格式的图片
- Excel 曝出 Power Query 安全漏洞,1.2 亿用户易受远程 DDE 攻击
- VBA将excel数据表生成JSON文件
- excel vba 限制工作表的滚动区域代码
- excel vba 高亮显示当前行代码
- Perl模块编写说明
- perl如何避免脚本在windows中闪一下就关闭
- Perl中的特殊内置变量详细介绍
- linux下使用perl获取本机ip的几种方法介绍
- perl 控制结构 条件控制 if while
- Perl中的列表和数组学习笔记
- perl数据库添加、删除、更新、查询操作例子
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- C#控制Excel Sheet使其自适应页宽与列宽的方法
- SQL 导入导出Excel数据的语句
- 文本、Excel、Access数据导入SQL Server2000的方法
- Perl中使用MIME::Lite发送邮件实例
- 什么是Perl?编程语言Perl详细介绍
- About Perl(翻译Perl官网介绍)
- perl 基本语法介绍