gpt4 book ai didi

excel - 使用 Perl 在 Excel 2010 工作表上保存 AsXMLData

转载 作者:行者123 更新时间:2023-12-04 20:46:29 27 4
gpt4 key购买 nike

我有一个 Excel 2010 电子表格,其中定义了一个 XML 映射。使用 Perl 我想将工作表保存为 XML 数据。我不需要导出 XML 映射文件。在 Excel 中,我可以选择“文件 > 另存为 > 另存为类型:XML 数据”。这是我要创建的输出,但来自我的 Perl 脚本。

我可以使用 SaveAs 以 CSV 格式输出工作表带有枚举 6 的命令。我还可以使用 SaveAs 以 XML 格式输出电子表格使用枚举 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();

最佳答案

我自己解决了这个问题(我 99% 都在那里!)。使用 Excel 中的宏记录器确认所需的函数调用如下:

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

导出 XML 映射的代码行错误。将上面的代码更改如下,脚本工作正常:
my $objMapToExport  = $workbook->XmlMaps("MDBAC_Map");

关于excel - 使用 Perl 在 Excel 2010 工作表上保存 AsXMLData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com