Използване на Perl за SaveAsXMLData в работен лист на Excel 2010

Имам електронна таблица на Excel 2010 с XML карта, дефинирана в нея. С помощта на Perl искам да запазя работния лист като XML данни. Не е необходимо да експортирам файла с XML карта. От Excel мога да избера „Файл > Запиши като > Запиши като тип: XML данни”. Това е изходът, който искам да създам, но от моя Perl скрипт.

Мога да изведа работния лист във формат CSV, като използвам командата SaveAs с enum 6. Мога също така да изведа електронната таблица в XML формат, използвайки SaveAs с enum 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