小编Dev*_*nul的帖子

LibreOffice/OpenOffice Calc:VBscript,将XLS表格导出为CSV

我正在尝试编写一段时间的脚本,但似乎它的一部分不起作用.

情况:我需要一个VB脚本,可以在任何Windows XP或7系统上使用任何LibreOffice(/ OpenOffice)Calc(在我的情况下为3.5.4)安装,以便将xls导出到csv(与csv文件一样多的csv文件) XLS).在这种情况下,它必须是VBS和LibreOffice.没有安装宏,一切由vbscript外部控制.

因此,第一步是使用宏录制器以获得正确的滤镜设置.

StarBasic宏:

    dim document   as object
    dim dispatcher as object

    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    dim args1(2) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "URL"
    args1(0).Value = "file:///C:/Users/lutz/Desktop/test.csv"
    args1(1).Name = "FilterName"
    args1(1).Value = "Text - txt - csv (StarCalc)"
    args1(2).Name = "FilterOptions"
    args1(2).Value = "9,0,76,1,,0,false,true,true"

    dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
Run Code Online (Sandbox Code Playgroud)

此宏(在LibreOffice中)写入当前工作表的CSV(在LO告诉我仅保存当前工作表之后),编码UTF-8,字段分隔符Tab,没有文本分隔符.这有效.

我试图让这个在我的vbs中工作,但绝对没有.所以我在OpenOffice和LibreOffice论坛中搜索了很多,这里是stackoverflow等,并使用了另一种方法.

问题:每次保存文件时,无论我使用哪种过滤器或过滤器选项,它都会将它们保存为ODS.它总是保存到压缩的OpenDocument.我尝试了很多过滤器,甚至PDF.当我只使用FilterName属性时它似乎与pdf一起使用但不知何故它不再起作用.我不知道为什么.

代码:

    ' Scripting object
    Dim wshshell
    ' File system object
    Dim objFSO
    ' OpenOffice / LibreOffice Service …
Run Code Online (Sandbox Code Playgroud)

csv vbscript xls libreoffice openoffice-basic

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

csv ×1

libreoffice ×1

openoffice-basic ×1

vbscript ×1

xls ×1