乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Perl win32::OLE 操作<em>excel</em>的教程说明

Perl win32::OLE 操作<em>excel</em>的教程说明

作者:乔山办公网日期:

返回目录:excel表格制作


  1. (如无意外) Excel 就是 UTF-8, 不用管里面的内容是甚麼

  2. 是 Perl 不是 PERL, Perl 是语言的名称, perl 是解释器

  3. 主要问题是如果你光是用 Win32::OLE, 那预设的编码就是你系统的编码, 例如 GB2312, 要解决你的问题, 可以试试在开头改成:

use Win32::OLE 'CP_UTF8';
$Win32::OLE::CP = CP_UTF8;

这样你读取 excel 的编码就是 utf-8



兄弟,7a686964616fe4b893e5b19e364这不是抄来的,而是把VBA (Visual Basic)码按Win32 OLE直接转化过来的。。。

我下面再举个例子,附上原来的VBA码,你就明白了。。。

要解决你的问题,去看VBA的书,然后相应得转化就是了。。。

/index.pl?node_id=153486

================================================
use warnings; #Option Explicit

use Win32::OLE;
use Win32::OLE::Variant;

# Dim ex
#Set ex = CreateObject(Excel.Application)
$ex = Win32::OLE->new('Excel.Application', \&OleQuit) or die "oops\n";
#ex.Visible = 1
$ex->{Visible} = 1;
# ex.Workbooks.Add()
$ex->Workbooks->Add;
# Dim ovR8
# ovR8 = "3 is a good number"
$ovR8 = Variant(VT_R8, "3 is a good number");
# ex.Range("A1")=ovr8
$ex->Range("A1")->{Value} = $ovR8;
# ex.Range("A2") = "Jan 1,2010"
$ex->Range("A2")->{Value} = Variant(VT_DATE, 'Jan 1,2010');
use Win32::OLE;
my $ex = Win32::OLE->new('Excel.Application') or die "oops\n";
$ex->{Visible} = 1;
$ex->Workbooks->Add;
$ex->Range("A1")->{Value} = "中国";


my $Excel = Win32::OLE->new('Excel.Application', sub{(shift)->Quit;});是用来新建一个Win32::OLE对象

而my $Excel= Win32::OLE->GetActiveObject('Excel.Application'); 是使用已经打开的Excel进行工作。
如果目前你没有打开Excel,必须使用new新建一个,如果打开了就可以使用GetActiveObject了。你的第二种写法很怪,一般会写成if (!$excel){$Excel = Win32::OLE->new('Excel.Application', sub{(shift)->Quit;});
},因此也就与第一种一样了。因此你的两种写法本质上没有什么区别,既然出错了,建议关闭打开的Excel,然后使用new新建Win32::OLE对象进行操作。你遇到的问题估计是程序那个地方写错了,还是zd再查看一下程序吧。

相关阅读

  • Perl win32::OLE 操作<em>excel</em>的教程说明

  • 乔山办公网excel表格制作
  • (如无意外百) Excel 就是 UTF-8, 不用管里面的内容是甚麼是 Perl 不是 PERL, Perl 是语言的名称度, perl 是解释器问主要问题答是如果你光是用 Win32::OLE, 那预设的编码就是版你系统的编码, 例如
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网