Excel::Writer::XLSX perl モジュールを使用して Excel にエクスポートしています。大規模なエクスポートに時間がかかることを除けば、うまく機能しています。ただし、 $workbook->set_optimization(); を追加すると .xlsx ファイルで数値データのみを取得します。
$worksheet->write() と $worksheet->write_string() の両方を使用してみましたが、$workbook->set_optimization(); を使用すると、数値ではなく文字列を持つフィールドがエクスポートから除外されます。
以前の Spreadsheet::WriteExcel モジュールを使用すると問題なく動作しますが、エクスポートのファイル サイズが大幅に大きくなり、24MB 対 7MB になります。
ヘッダー行を作成するコードは次のとおりです。
# Create a new workbook
my $workbook = Excel::Writer::XLSX->new($file_path);
$workbook->set_optimization();
my $worksheet = $workbook->add_worksheet();
# insert the header row
my $header_cnt = 0;
foreach my $header_cell (@header_values){#loop through each header column and add it to the sheet
# print $header_cell." - ".$header_cnt."\n";
# $worksheet->write_string("0", $header_cnt, "test");
$worksheet->write_string("0", $header_cnt, $header_cell);
$header_cnt++;
}
$workbook->close() or die "Error closing file: $!";