У меня есть электронная таблица Excel 2010 с определенной в ней картой XML. Используя Perl, я хочу сохранить рабочий лист как XML-данные. Мне не нужно экспортировать файл карты XML. В Excel я могу выбрать «Файл> Сохранить как> Сохранить как тип: данные XML». Это результат, который я хочу создать, но из моего сценария Perl.
Я могу вывести рабочий лист в формате CSV, используя команду SaveAs
с перечислением 6. Я также могу вывести электронную таблицу в формате XML, используя SaveAs
с перечислением 46, но это не то, что мне нужно. Мне нужны только данные 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();