2017-03-29 12 views
0

私たちは長い間、Spreadsheet :: WriteExcelを使用してきましたが、これは魅力的でした。Spreadsheet :: WriteExcel set_optimization()はリンク解除エラーを生成します

数年前、私たちはdocumentationに述べたようにWriteExcelよりも5倍以上のメモリを使用していますエクセル・ライター-XLSXに移行しました。 XLSXのおかげで、ユーザーはより大きなExcelファイルを生成できるようになりました。 サーバーメモリの約84%が必要とされていたメモリ使用の問題に直面するのは、数週間から始まりました。

同じドキュメントが$workbook->set_optimization()が問題を解決しなければならないと述べています。与えられたパフォーマンス数値は有望です。 サンプルファイルで$workbook->set_optimization()を使用しようとしましたが、これは機能しませんでした。リンク解除エラーを生成します。

set_optimization()が削除されている場合は、Excelファイルが正しく生成されます。 例は、このthreadで著者によって提供されています

#!/usr/bin/perl -w 

use strict; 
use Excel::Writer::XLSX; 

my $workbook = Excel::Writer::XLSX->new('test.xlsx'); 
$workbook->set_optimization(); 

my $worksheet = $workbook->add_worksheet(); 


my @header_values = (1, 2, 3, 'foo', 'bar', 6, 7); 
my $header_cnt = 0; 

for my $header_cell (@header_values){ 
    $worksheet->write(0, $header_cnt, $header_cell); 
    $header_cnt++; 
} 

$workbook->close(); 

Error unlinking file /opt/.../rKhGTRYWSJ using unlink0 at /usr/local/share/perl5/Excel/Writer/XLSX/Worksheet.pm line 204 
(in cleanup) Error unlinking file /opt/.../iGr8Qo8VBD using unlink0 at /usr/local/share/perl5/Excel/Writer/XLSX/Worksheet.pm line 204 

我々が実行されている:

  • エクセル・ライター・XLSX 0.70
  • のperl v5.10.1
  • のRed Hat Enterprise Linuxサーバーを6.8(サンティアゴ)

を放出する任意の助けいただければ幸いです。

+1

コードに何が起こっているのかわからないので、例を含める必要があります。 – simbabque

+0

あなたの質問に、適切な書式でそれを[編集]してください。自分の質問を外部のリソースなしで独立して立てることができるので、独自の例を含めるとよいでしょう。そのリソースがオンサイトであっても、依然としてこの質問の一部ではありません。ありがとうございました。 – simbabque

+0

これは古いバージョンのモジュールとPerlです。 – toolic

答えて

0

エクセル:: XLSX ::ライタはXLSXで大量のデータを書き込むようにし、大規模なデータを処理するために、メモリ使用量set_optimization()メソッドを低減するために使用されて使用されます。

XLSXファイルでは、ワークブックは最大10,48,576行まで作成でき、16,384列を作成することができます。また、行数が最大限度を超えた場合、新しいブックを同じブックで作成することができます。データを処理することができます。

は、詳細については、このリンクhttps://github.com/AarthiRT/Excel_Writer_XLSXから「Write_largeData_XLSX.pl」を参照してください。

関連する問題