打开Template.xlsx文件并使用perl写入数据然后SaveAs UpdatedTemplate.xlsx

时间:2014-09-29 09:43:26

标签: perl

use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
    || Win32::OLE->new( 'Excel.Application', 'Quit' );
my $book = $Excel->Workbooks->Open('Template.xlsx');

# write to a particular cell
$sheet = $book->Worksheets(1);
$sheet->Cells( 1, 1 )->{Value} = "MyData";

# save and exit
$book->SaveAs('UpdatedTemplate.xlsx');
undef $book;
undef $Excel;

请在下面找到我的要求

  1. 打开Template.xlsx档案
  2. 将值写入打开的* .xlsx文件
  3. 然后将其另存为UpdatedTemplate.xlsx文件
  4. 的问题:

    1. UpdatedTemplate.xlsx未生成。
    2. 我无法找到UpdatedTemplate.xls x文件。有时它会显示消息" UpdatedTemplate.xlsx已存在于此位置。你想替换它吗?",但是如果我说是的话就不会生成文件。

1 个答案:

答案 0 :(得分:1)

如果你没有在SaveAs('UpdateTemplate.xlsx')中给出完整路径,那么默认情况下它将保存在windows的Documents文件夹中。你可以自己检查一下。因此,最好在方法open和saveas中给出绝对路径

   use Win32::OLE qw(in with);
   use Win32::OLE::Const 'Microsoft Excel'; 
   my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
     || Win32::OLE->new('Excel.Application', 'Quit');
    my $book  = $Excel->Workbooks->Open('D:\Perl\Template.xlsx');


    # write to a particular cell
    $sheet = $book->Worksheets(1);
    $sheet->Cells(1,1)->{Value} = "MyData";

    # save and exit
    $book->SaveAs('D:\Perl\UpdatedTemplate.xlsx');
    $book-> close;