Ada*_*tan 3 openoffice-calc openoffice conversion microsoft-excel
我需要以电子表格格式创建自动报告。不幸的是,似乎有一种使用 OpenOffice Calc 创建这些报告的简单方法,但高层管理人员希望它们采用 MS Excel 格式。
由于这些报告将自动创建并通过电子邮件发送,是否有一种不错的命令行方式可以在这些文件格式之间进行转换?
是的,有一种命令行方式可以在这些文件格式之间进行转换。但是宏必须首先安装到 OpenOffice 中。此宏将从命令行获取指定的 OpenOffice 文件名,并创建一个除文件扩展名外具有相同名称的 Microsoft Excel 文件 (.xls)。
我已经在 Windows 上使用 OpenOffice 3.2 对此进行了测试,但我希望它可以在 Ubuntu 和 OpenOffice 1.1 或更高版本上运行。
要在命令行上使用的程序是soffice
. 在 Windows 上,它不在路径上,必须使用绝对路径或当前目录在那里。
将 OpenOffice 电子表格文件转换/home/mortense/temp9/test2.ods
为 Excel 格式的示例 Ubuntu 命令行(未经测试)/home/mortense/temp9/test2.xls
:
"/usr/lib/openoffice/program/soffice" "macro:///Standard.doConvertToExcel.doConvertToExcel(/home/mortense/temp9/test2.ods)"
Run Code Online (Sandbox Code Playgroud)
测试期间使用的示例 Windows 命令行将 OpenOffice 电子表格文件转换D:\temp9\test2.ods
为 Excel 格式D:\temp9\test2.xls
:
"D:\Program Files (x86)\OpenOffice32\OpenOffice.org 3\program\soffice.exe" "macro:///Standard.doConvertToExcel.doConvertToExcel(D:/temp9/test2.ods)"
Run Code Online (Sandbox Code Playgroud)
下面列出了宏。以下是安装说明:
启动 OpenOffice Calc。
将此答案末尾的代码复制到剪贴板。创建宏:菜单 Tools/Macros/Organise Macros/OpenOffice.org Basic/。然后展开到“我的宏/标准/”,以便选择“标准”。按“新建”按钮。
右键单击左下角的选项卡并选择:插入/基本模块。右键单击创建的模块,选择“重命名”并键入“doConvertToExcel”。单击编辑区域(将焦点设置在那里),全选 ( Ctrl+ A) 并粘贴代码。关闭窗口(例如使用Ctrl+ W)。就是这样!
宏的代码:
Sub doConvertToExcel( aFile )
URL = ConvertToURL( aFile )
' Open the document.
' Just blindly assume that the document is of a type that OOo will
' correctly recognize and open -- without specifying an import filter.
doc = StarDesktop.loadComponentFromURL( URL, "_blank", 0, Array(_
MakePropertyValue( "Hidden", True ),_
) )
outFile = Left( aFile, Len( aFile ) - 4 ) + ".xls"
outURL = ConvertToURL( outFile)
' List of filters: <http://www.oooforum.org/forum/viewtopic.phtml?t=3549> and
' <http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options>.
'
' Save the document using a filter.
doc.storeToURL( outURL, Array(_
MakePropertyValue( "FilterName", "MS Excel 97" ),_
)
doc.close( True )
End Sub
Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
MakePropertyValue() = oPropertyValue
End Function
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3982 次 |
最近记录: |