Использование Perl для сохранения AsXMLData на листе Excel 2010

У меня есть электронная таблица 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();

person Chris    schedule 28.01.2013    source источник


Ответы (1)


Исправил сам (там было 99%!). Использование средства записи макросов в Excel подтвердило следующие вызовы необходимых функций:

ChDir "C:\temp"
ActiveWorkbook.SaveAsXMLData Filename:="C:\temp\master.xml", Map:= _
        ActiveWorkbook.XmlMaps("MDBAC_Map")

Строка кода для экспорта карты XML неверна. Изменил приведенный выше код следующим образом, и скрипт работает нормально:

my $objMapToExport  = $workbook->XmlMaps("MDBAC_Map");
person Chris    schedule 28.01.2013