#!/usr/bin/perl -w use strict; use Spreadsheet::ParseExcel; use Spreadsheet::ParseExcel::SaveParser; # Open the template with SaveParser my $parser = new Spreadsheet::ParseExcel::SaveParser; #my $finanzen = "/data/DatenLucas/Dokumente/Dokumente/Finanzen/Finanzen2020.ods" my $finanzen = 'test.ods'; my $template = $parser->Parse($finanzen); my $sheet = 0; my $row = 3; my $col = 3; # Get the format from the cell my $format = $template->{Worksheet}[$sheet] ->{Cells}[$row][$col] ->{FormatNo}; # Write data to some cells $template->AddCell(0, $row, $col, 1, $format); $template->AddCell(0, $row+1, $col, "Hello", $format); # Add a new worksheet $template->AddWorksheet('New Data'); $template->AddCell(1, $row+2, $col, "Hello3", $format); my $worksheet_1 = $template->worksheet('New Data'); $worksheet_1->AddCell($row+3, $col, "Hello3", $format); # The SaveParser SaveAs() method returns a reference to a # Spreadsheet::WriteExcel object. If you wish you can then # use this to access any of the methods that aren't # available from the SaveParser object. If you don't need # to do this just use SaveAs(). # my $workbook; { # SaveAs generates a lot of harmless warnings about unset # Worksheet properties. You can ignore them if you wish. local $^W = 0; # Rewrite the file or save as a new file $workbook = $template->SaveAs('new.ods'); } # Use Spreadsheet::WriteExcel methods my $worksheet = $workbook->sheets(0); $worksheet->write($row+2, $col, "World2"); $workbook->close();