是否可以从AIR桌面应用程序中在Excel中打开XML?
我有一个XML数据库,我想在Excel中打开它进行打印。我认为,打印存储在数据网格(闪存组件)中的完整数据是不可能的。
提前致谢。
:::::更新我:::::
在 null.point3r 的帮助下,我找到了Excel。现在我必须尝试了解如何用它打开XML。
他给了我链接的线索:
午餐excel并打开XML文件。 (创建NativeProcess并将XML路径作为argument)command line switches for excel传递。
但是我对这些东西不熟悉所以,如果有人有一个例子,我会很感激他的帮助。
到目前为止我所拥有的:
import flash.filesystem.File;
var myXML = File.documentsDirectory.resolvePath("storage/companies.xml");
if(myXML.exists){
trace ("Eureka!!!");
}
var excel:File = new File();
excel.nativePath = "C:\\Archivos de programa\\Microsoft Office\\Office12\\excel.exe";
if(excel.exists){
trace ("Got it!!!");
}
//get executable(file.nativePath):File;
注意:我将使用数组和循环来检查不同的Office版本。
::::更新II ::::
我收到错误#3219:无法启动NativeProcess。 '当前个人资料不支持。':
import flash.filesystem.File;
var myXML = File.documentsDirectory.resolvePath("storage/companies.xml");
if (myXML.exists) {
trace(myXML.nativePath);
}
var process:NativeProcess;
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var excel:File = new File();
excel.nativePath = "C:\\Archivos de programa\\Microsoft Office\\Office12\\excel.exe";
if (excel.exists) {
trace(excel.nativePath);
}
nativeProcessStartupInfo.executable = excel;
var processArgs:Vector.<String> = new Vector.<String>();
processArgs[0] = String(myXML.nativePath);
nativeProcessStartupInfo.arguments = processArgs;
process = new NativeProcess();
process.start(nativeProcessStartupInfo);
答案 0 :(得分:1)
检查默认位置是否有exists():
C:\ Program Files \ Microsoft Office \ Office X ( X 取决于办公室版本)
如果找不到,请显示browseForOpen()对话框或提示用户进行安装。
午餐excel并打开XML文件。 (创建NativeProcess并将XML路径传递为argument)command line switches for excel
<强>更新强>
var process:NativeProcess;
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var excel:File = new File();
excel.nativePath = "path\to\excel";
if(excel.exists){
trace (excel.nativePath);
}
nativeProcessStartupInfo.executable = excel;
var processArgs:Vector.<String> = new Vector.<String>();
processArgs[0] = "path\to\xml";
nativeProcessStartupInfo.arguments = processArgs;
process = new NativeProcess();
process.start(nativeProcessStartupInfo);