在这个模块中,你可以创建一个工作手册,并在其中加入工作表,然后直接写入工作表单元格。有许多格式化选项允许你改变字段数据的格式、黑体、对齐方式、字体、前景和背景颜色、填充图案以及边框。
另外,Spreadsheet::WriteExcel可以改变字体,文字变形和旋转文字,插入位图,设置密码保护工作表,以及建立能用鼠标扩展的数据集合。当然还能够设置打印选项和页面暂停的功能。
该模块还可以写标准输出数据,因此它可以在cgi-bin程序中使用。其他程序语言可以通过HTTP
URL参照cgi-bin,来请求Excel电子数据表格电子数据表格。
下面是一个例子,它用DBI从EMP表中提取数据并用公式和格式化生成一个Excel电子数据表格电子数据表格。
use DBI
use Spreadsheet::WriteExcel
# connect to the local database
my $dbh =
DBI->connect(’dbi:Oracle:’,’scott’,’tiger’) || die
$DBI::errstrbitscn.com
print "Generating Excel Spreadsheet\n"
my $workbook = new Spreadsheet::WriteExcel "emp.xls"
my $worksheet = $workbook->add_worksheet()
my $fmt = {
HEADER =>
$workbook->add_format(bold=>1,align=>’center’,
bottom=>2,bg_color=>’silver’),
ENAME =>
$workbook->add_format(bold=>1,color=>’blue’),
MONEY =>
$workbook->add_format(
num_format=>’$#,##0.00’,align=>’right’),
TOTAL =>
$workbook->add_format(
num_format=>’$#,##0.00’,align=>’right’,bold=>1,
top=>2),
}
print "Querying Employees\n"
my $sth = $dbh->prepare(’select * from emp’) ||
die $DBI::errstr
my $rc = $sth->execute
my $r = 1
$worksheet->write($r-1,0,’Employee’,$fmt->{HEADER})
$worksheet->write($r-1,1,’Salary’,$fmt->{HEADER})
$worksheet->write($r-1,2,’Commission’,$fmt->{HEADER})
$worksheet->write($r-1,3,’Total’,$fmt->{HEADER})
$r++
while (my $row = $sth->fetchrow_hashref)
中国网管联盟
{
$worksheet->write($r-1,0,$row->{ENAME},$fmt->{ENAME})
$worksheet->write($r-1,1,$row->{SAL},$fmt->{MONEY})
$worksheet->write($r-1,2,$row->{COMM},$fmt->{MONEY})
$worksheet->write($r-1,3,"=B$r+C$r",$fmt->{MONEY})
$r++
}
$worksheet->write($r-1,0,’’,$fmt->{TOTAL})
$worksheet->write($r-1,1,’=SUM(B2:B’.($r-1).’)’,$fmt->{TOTAL})
$worksheet->write($r-1,2,’=SUM(C2:C’.($r-1).’)’,$fmt->{TOTAL})
$worksheet->write($r-1,3,"=B$r+C$r",$fmt->{TOTAL})
print "Processed " . ($r-2) ." rows\n"
$sth->finish
# 创建一个新的EXCEL文件my $workbook = Spreadsheet::WriteExcel->new('test.xls')
# 添加一个工作表
$worksheet = $workbook->add_worksheet()
# 新建一个样式
$format = $workbook->add_format()# Add a format
$format->set_bold()#设置字体为粗体
$format->set_color('red')#设置单元格前景色为红色
$format->set_align('center')#设置单元格居中
#使用行号及列号,向单元格写入一个格式化和末格式化的字符串
$col = 1
$row = 2
$worksheet->write($row, $col, 'Hi Excel!', $format)
$worksheet->write( $col-1, $row-1 , 'Hi Excel!')
$worksheet->write(1,$col, 'Hi Excel!')
#使用单元格名称(例:A1),向单元格中写一个数字。
$worksheet->write('A3', 1.2345)
$worksheet->write('A4', '=SIN(PI()/4)')
exit
在网上找到了demo代码,需要安装相关的包,在winddows下,
cmd模式,ppm,安装Spreadsheet-WriteExcel包。
PS:如果碰到中文写入时乱码问题,要ppm 安装Unicode_Map包,按照如下方法使用
use Unicode::Map()
my $Map = new Unicode::Map("GB2312")
my $abc='你好!'
$worksheet->write_unicode($LineCount, 1, $Map->to_unicode( $abc))
这样就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)