XML マップが定義された Excel 2010 スプレッドシートがあります。Perl を使用して、ワークシートを XML データとして保存したいと考えています。XML マップ ファイルをエクスポートする必要はありません。Excel 内から、[ファイル] > [名前を付けて保存] > [ファイルの種類: XML データ] を選択できます。これは私が作成したい出力ですが、私の Perl スクリプトからのものです。
SaveAs
enum 6 のコマンドを使用してワークシートを CSV 形式で出力できますSaveAs
。enum 46 を使用して XML 形式でスプレッドシートを出力することもできますが、これは私が望むものではありません。XMLデータだけが欲しい..
機能があるようですが、SaveAsXMLData
機能させることができません。どんな助けでも感謝します。
use strict;
use warnings;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
use Win32::OLE::Variant;
use Win32::OLE::NLS qw(:LOCALE :DATE);
$Win32::OLE::Warn = 3; # Die on Errors.
my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
$Excel->{DisplayAlerts}=0;
my $excel_file = 'c:\\temp\\master.xlsx';
my $csv_file = 'c:\\temp\\master.csv';
my $xml_file = 'c:\\temp\\master.xml';
my $workbook = $Excel->Workbooks->Open($excel_file);
# Alt+F11 in Excel to start VBA and after that F2 to start Object browser.
# 6 is CSV format
# 46 is XML spreadsheet
$workbook->SaveAs( $csv_file, 6 );
# Now just the XML Data
# The map is called MDBAC_Map
my $objMapToExport = $Excel->Workbooks->XmlMaps("MDBAC_Map");
$workbook->SaveAsXMLData( $xml_file, $objMapToExport );
$workbook->Close();
$Excel->Quit();