【问题标题】:Perl Copy data from csv to excel workbookPerl 将数据从 csv 复制到 excel 工作簿
【发布时间】:2019-04-27 15:45:06
【问题描述】:

我正在尝试打开一个 csv 文件并从其中复制数据以将其粘贴到已构建的 excel (2016) 工作簿中的选项卡中。

我的问题似乎是正确访问 csv 文件。 这是我的代码

use utf8;
use Cwd;
use warnings;
use strict;
use Win32::OLE;
use Win32::OLE qw(in with);
use Win32::OLE::Const "Microsoft Office .* Object Library"; 

my $Excel  = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
$Excel->{Visible} = 0;
$Excel->{DisplayAlerts}=0;

my $XLSX_LOG_IN = "book1.xlsx";
my $Book_In = $Excel->Workbooks->Open("$XLSX_LOG_IN") or die "Excel Logfile Workbook not opened - Ensure file 'book1.xlsx' is in the working directory\n";

my $csv_in = $Excel->Workbooks->Open("$csv") or die "Excel Logfile Workbook not opened - Ensure file \"$csv\" is in the working directory\n";
my @s_ins = in $csv_in->worksheets;
my $s_in = $s_ins[0];
my $name = $csv_in->Worksheets($s_in)->{Name};
print "$s_in - sheet I'm trying to open\n";
print "$name - sheet I'm trying to open\n";
my $res_sheet = $csv_in -> Worksheets("$name");
my $last_row = $res_sheet -> UsedRange -> Find({What => "*", SearchDirection => 2, SearchOrder => 1})    -> {Row};
my $last_col = $res_sheet -> UsedRange -> Find({What => "*", SearchDirection => 2, SearchOrder => 2}) -> {Column};

my $range = "A1:".$last_col.$last_row;
$res_sheet->range($range)->copy();

my $ResReport = $Book_In -> Worksheets("ModelReserveReport");
$ResReport->range('A1')->Select();
$ResReport->paste();
$csv_in->Close();

我不断收到以下错误 Win32::OLE(0.1712) 错误 0x8002000b: "无效索引"

我想我要么没有将 excel 指向工作表的正确名称,要么我有找到最后一行和最后一列错误的方法,但我正在努力解决任何一个问题。 谁能发现我的错误?

【问题讨论】:

    标签: excel perl csv win32ole


    【解决方案1】:

    我通过编辑最后 6 行代码解决了这个问题

    我在源表上进行了选择

    my $range = "A1:CZ".$last_row;
    $res_sheet->range($range)->copy();
    

    并在粘贴我的数据之前删除了选择

    my $ResReport = $Book_In -> Worksheets("ModelReserveReport");
    $ResReport->paste();
    $csv_in->Close();
    

    现在可以复制/粘贴了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-11
      • 2014-07-07
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多