POI 3.9 を使用して xlsx からデータを読み取っています。しかし今、問題に直面しています。POI は xlsb ファイルをサポートしていないため、プログラムで xlsb からデータを読み取る必要があります。プログラムでxlsbからデータを読み取る方法を知っている人はいますか? 感謝。
質問する
12098 次
5 に答える
1
Perl では、Win32::OLEモジュールが XLSB を XLSX に変換できます。欠点: MS Excel をインストールする必要があります。これが私が使用したものに基づくサンプルコードです...
use File::Spec::Functions qw/rel2abs/;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Excel';
use Win32::OLE::Variant;
Win32::OLE->Option( Warn => 3 );
my $xlsb = 'C:\Users\wohlfarj\Documents\File.xlsb';
# This block uses an already open instance of Excel, or starts a new one if it isn't already open.
my $excel;
eval { $excel = Win32::OLE->GetActiveObject('Excel.Application') };
die 'MS Excel not installed' if $@;
unless (defined $excel) {
$excel = Win32::OLE->new( 'Excel.Application', 'Quit' )
or die 'Cannot start MS Excel';
}
# After all of the setup, converting the file is painless.
my $xlsx = rel2abs( $xlsb );
$xlsx =~ s/\.xlsb$/\.xlsx/i;
my $workbook = $excel->Workbooks->Open( {FileName => rel2abs( $xlsb )} );
$workbook->SaveAs( {FileFormat => xlOpenXMLWorkbook, Filename => $xlsx} );
$workbook->Close( {SaveChanges => xlDoNotSaveChanges} );
ここから、Spreadsheet::XLSXモジュールは XLSX コピーを問題なく読み取ります。
于 2013-10-08T16:42:58.023 に答える
-3
これは単なる回避策です..
xlsb ファイルを xlsx ファイルに変換し、POI を使用してそこからデータを抽出できます。
試してみましたか?正しい答えではないことは承知していますが、お役に立てば幸いです。:)
于 2013-06-19T06:42:45.063 に答える