I have written a script for updating and modifying a price list in Excel. First 
let me show you the script:

#!/usr/bin/perl
use strict;
use Spreadsheet::XLSX;
use SpreadSheet::WriteExcel;

my $excel = Spreadsheet::XLSX -> new ('build.xlsx');
my $sheet = $excel->Worksheet('Sheet1');
my ($row_min,$row_max) = $sheet->row_range();

# scan col D and store values
my %colD=();
for my $row ($row_min..$row_max){
  my $valD = $sheet->{Cells}[$row][3]->{Val}; 
  $colD{$valD} = $row+1; # excel row number
}

# scan col A starting at row 2
open FILE,'>','feckyou.txt' or die $!;
  
  my $workbook1 = Spreadsheet::WriteExcel->new('newproduct.xls');
  my $worksheet1 = $workbook1->add_worksheet(); 
  my $write_row = 1;
  for my $row (1..$row_max){
  my $valA = $sheet->{Cells}[$row][0]->{Val}; 
  my $valB = $sheet->{Cells}[$row][1]->{Val};
  # does this value exist in Col D
  if (exists $colD{$valA}) {
   my $xlrow = $row+1;
   print FILE "price change [A$xlrow]=[D$colD{$valA}] Value=$valB\n";
   } else {
  
#output new products to text file
 
   # ...
   $worksheet1->write ($write_row, 0, "$valA");
   $worksheet1->write ($write_row, 1, "$valB");
   $write_row++;
   # ...
 }
  }
  
SO this works. Except in the if section above where it writes to a file, I 
actually need it to write to column R (17) in the same spreadsheet the data is 
coming from. I just need that $valB to be written to column R if the condition 
of the if is met. Every time I try to just declare it and then write to it 
using 

$worksheet->write ($row+1, 1, "$valB");

it gives me an error to the effect that its not a declared object.  
Even though I clearly declare it. 
I think its something to do with reading it in SPreadsheet::xlsx and then 
trying to write to the same sheet using Spreadsheet::WriteExcel

but i ho hnestly have no idea why
can someone help me?


--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to