Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开Template.xlsx文件并写入数据,然后使用perl将其另存为updateTemplate.xlsx_Perl - Fatal编程技术网

打开Template.xlsx文件并写入数据,然后使用perl将其另存为updateTemplate.xlsx

打开Template.xlsx文件并写入数据,然后使用perl将其另存为updateTemplate.xlsx,perl,Perl,请在下面找到我的要求 打开Template.xlsx文件 将值写入打开的*.xlsx文件 然后将其另存为UpdatedTemplate.xlsx文件 问题: 未生成更新模板.xlsx 我找不到updateTemplate.xlsx文件。有时它会显示消息“UpdateTemplate.xlsx已存在于此位置。是否要替换它?”,但如果我说是,则不会生成该文件 如果您没有在SaveAs('UpdateTemplate.xlsx')中提供完整的路径,那么默认情况下它将保存在windows的Documen

请在下面找到我的要求

  • 打开
    Template.xlsx
    文件
  • 将值写入打开的*.xlsx文件
  • 然后将其另存为
    UpdatedTemplate.xlsx
    文件
  • 问题:

  • 未生成更新模板.xlsx
  • 我找不到
    updateTemplate.xls
    x文件。有时它会显示消息“UpdateTemplate.xlsx已存在于此位置。是否要替换它?”,但如果我说是,则不会生成该文件

  • 如果您没有在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('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;
    

    它是否也会使用Save()执行此操作?我试图弄清楚为什么我继承的脚本要保存Excel电子表格的两个副本—一个副本在它应该保存的地方(完全定义的路径名),另一个副本到默认用户配置文件的Documents文件夹(脚本作为系统运行)。我可能应该为此开始一个新的问题,因为它确实与原始问题相切。
       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;