免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5627 | 回复: 9
打印 上一主题 下一主题

PERL如何生成DOC,EXCEL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-12 13:38 |只看该作者 |倒序浏览
WEB上提取数据库里的统计信息,我希望最终它以DOC,EXCEL格式呈现出来,怎么创建这种文本格式的结果输出?能给详细代码参考吗?谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-01-12 17:03 |只看该作者

PERL如何生成DOC,EXCEL

这是我以前写的一个例子,对word,excel文件的各种详细的操作
可参看offic的vba参考手册

-------cut  here---------------------------------------------------

#!/usr/bin/aperl

use OLE;

#创建的excel文件的文件名
$xlfile ="c:\\temp\\ccc.xls";
open(FH,"filelist" or die "cannot open file : $!";

#创建excel应用的OLE对象
$xl_app = CreateObject OLE 'Excel.Application' || die $!;
$xl_app->;{'Visible'} = 1; #打开的excel是否可见
$xl_app->;{'SheetsInNewWorkbook'} = 1; #文件中有一个工作表
$workbook = $xl_app->;Workbooks->;Add; #创建新的工作簿
$worksheet = $workbook->;Worksheets(1); #选择第一个工作表
$i=1;
while(<FH>{
        split;
        $worksheet->;Range("A1"->;{'ColumnWidth'}=length $_[10] #设置cell的宽度
                        if( ($worksheet->;Range("A1"->;{'ColumnWidth'}) < (length $_[10]) );
        $worksheet->;Cells($i,1)->;{'Value'}=$_[10]; #为cell赋值
        $worksheet->;Cells($i,2)->;{'Value'}=$_[9];
        $worksheet->;Cells($i,3)->;{'Value'}=$_[6];
        $worksheet->;Cells($i,4)->;{'Value'}=$_[7];
        $worksheet->;Cells($i,5)->;{'Value'}=$_[5];
        $worksheet->;Cells($i,6)->;{'Value'}=$_[4];
        $i++;
}
sleep 5;
#$workbook->;SaveAs($xlfile); #保存文件
$xl_app->;ActiveWorkbook->;Close(0);
$xl_app->;Quit();

论坛徽章:
0
3 [报告]
发表于 2004-01-13 08:55 |只看该作者

PERL如何生成DOC,EXCEL

length $_[10]  是什么东西的长度?


Range("A1"是什么?

$worksheet->;Cells($i,2)->;{'Value'}=$_[9]; 中:

Cells($i,2)如果表示第i行第2列,那么直接Cells($i,2)可以了吗?{'Value'}是固定格式?

论坛徽章:
0
4 [报告]
发表于 2004-01-13 15:58 |只看该作者

PERL如何生成DOC,EXCEL

这个程序很早以前写的,记不太清楚了
好像是把filelist这个文本文件中的内容加到一个生成
的excel文件cc.xls中

1. length $_[10]是filelist中第11列的字串的宽度
2. A1应该是A1号单元格吧
3. Cells($i,2)是一个对象,因此不能直接赋值,要对单元格赋值
的话只能给Cells对象的Value属性赋值

Office里面具体的各种对象,方法和属性可以看Office VBA的参考手册

论坛徽章:
0
5 [报告]
发表于 2005-12-18 23:12 |只看该作者

请问能不能处理有合并单元格的Excel文件?

我想输出的Excel文件比较复杂点,有合并单元格,如何实现?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
6 [报告]
发表于 2005-12-18 23:49 |只看该作者
原帖由 batchmain 于 2005-12-18 23:12 发表
我想输出的Excel文件比较复杂点,有合并单元格,如何实现?



这个我想你应该首先完全熟悉VBA里面对Excel的操作,然后再来使用Perl调用.

否则仅仅从perl的角度来说是没有任何捷径的

论坛徽章:
0
7 [报告]
发表于 2005-12-19 10:15 |只看该作者
斑竹你好。我是在UNIX下生成Excel文件,应该与DBA没有什么关系,真的没有什么好办法么?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
8 [报告]
发表于 2005-12-19 10:51 |只看该作者
Unix???

那基本没有多大的可能了.

前面提供的是Win的方法,才用类似VBA的手段操作的.

论坛徽章:
0
9 [报告]
发表于 2005-12-19 22:18 |只看该作者
原帖由 con 于 2004-1-12 17:03 发表
这是我以前写的一个例子,对word,excel文件的各种详细的操作
可参看offic的vba参考手册

-------cut  here---------------------------------------------------

#!/usr/bin/aperl

use OLE;

#创建的e ...

请问 sleep 5 是什么意思呢?

论坛徽章:
0
10 [报告]
发表于 2005-12-20 19:36 |只看该作者
原帖由 peakgod 于 2005-12-19 22:18 发表

请问 sleep 5 是什么意思呢?



休眠5秒钟。perldoc -f sleep
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP