2017-05-16 38 views
1

我已經有xlsx,其中包含9張圖紙,其中1-7張圖紙由圖形組成,而8張和9張圖紙爲空白。我需要做的是在第8和第9張表格中寫入一些數據。那麼我試圖使用python,但在xlsx表中的數據擰乾後,圖表和圖表消失。修改包含圖表和圖表的現有xlsx表格

下面代碼我曾嘗試下面的perl代碼來修改現有的xls片
注意:在這裏,我已轉換的XLSX成XLS和重複使用它。

use strict; 
use warnings; 

use Spreadsheet::ParseExcel; 
use Spreadsheet::ParseExcel::SaveParser; 


my $parser = Spreadsheet::ParseExcel::SaveParser->new(); 
my $template = $parser->Parse('TEMP.XLS'); 

my $worksheet = $template->worksheet('8'); 
my $row = 0; 
my $col = 0; 

$worksheet->AddCell($row, $col, 'New string'); 
$worksheet->AddCell($row, $col + 1, 'Newer'); 

$template->SaveAs('newfile.xls'); 

但它導致刪除圖形和圖表。 任何人都可以幫助我在perl或python中做同樣的事情。

在此先感謝..

+0

你嘗試過電子表格:: XLSX? – bytepusher

回答

1

此代碼將保留舊的,讓你添加一些新的代碼:

use strict; 
use warnings; 

use Excel::Writer::XLSX; 
use Spreadsheet::Read; 
use Data::Dumper; 

# read the file 
my $book = ReadData ('Factura.xls'); 
my @data; 
my @sheets = (0..1); 
my $workbook = Excel::Writer::XLSX->new('Factura_1.xls'); 
my $worksheet; 
# save the old data 
foreach my $sheet (1 .. ($#sheets+1)) { 
    my @rows = Spreadsheet::Read::rows($book->[$sheet]); 
    $worksheet = $workbook->add_worksheet($sheet); 
    foreach my $i (1 .. scalar @rows) { 
    foreach my $j (1 .. scalar @{$rows[$i-1]}) { 
     $worksheet->write($i-1, $j-1, $rows[$i-1][$j-1]); 
     my $chart = $workbook->add_chart(type => 'bar', embedded => 1); 
    $chart->add_series(
     name => '='."1".'!$A$0', 
     values => '='."1".'!$A$2:$A$15', 
    ); 
    $worksheet->insert_chart('E2', $chart, 25, 10); 
    } 
    } 

} 

# write new data 
$worksheet = $workbook->add_worksheet(3); 
$worksheet->write(0, 0, 'New string'); 
+0

感謝您的迴應,但仍然是圖表,字體和格式在新的Excel表格中不可見... –

+0

Hi @Hiten Chedda我插入了一些小圖來創建圖表。 –