LibreOffice Calc 宏将命名工作表保存在 csv 文件中

Posted

技术标签:

【中文标题】LibreOffice Calc 宏将命名工作表保存在 csv 文件中【英文标题】:LibreOffice Calc macro to save a named sheet in a csv file 【发布时间】:2020-07-01 16:25:15 【问题描述】:

有一个名为“Data.ods”的 Calc 文件和一个名为“DataSheet”的工作表,应使用 tab 作为字段分隔符和双引号数据字段将其保存在当前目录的“Data.csv”文件中.如何在 LO Basic 宏中实现这一点?

【问题讨论】:

【参考方案1】:

您尚未指定宏是否应打开“Data.ods”电子表格或是否已打开。此代码适用于当前电子表格:

Sub Generate_CSV()
Dim sURL As String ' URL of current spreadsheet
Dim FileN As String ' URL of target CSV-file
Dim oCurrentController As Object ' Before save - activate sheet sSheetName
Dim storeParms(2) as new com.sun.star.beans.PropertyValue 
Const sSheetName = "DataSheet"
   GlobalScope.BasicLibraries.LoadLibrary("Tools") ' Only for GetFileName
   sURL = thisComponent.getURL()
   If Not thisComponent.getSheets().hasByName(sSheetName) Then
        MsgBox ("Sheet """ & sSheetName & """ Not Found In Current Spreadsheet")
        Exit Sub
   EndIf
   FileN = GetFileNameWithoutExtension(sURL) & ".csv" ' For Data.ods it will be Data.csv
REM Options to StoreTo:
   storeParms(0).Name = "FilterName"
   storeParms(0).Value = "Text - txt - csv (StarCalc)"
   storeParms(1).Name = "FilterOptions"
   storeParms(1).Value = "9,34,,65535,1,,0,true,true,true" 
REM About this string see https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options
   storeParms(2).Name = "Overwrite"
   storeParms(2).Value = True
REM Activate sheet for export - select "DataSheet"
   thisComponent.getCurrentController().setActiveSheet(thisComponent.getSheets().getByName(sSheetName))
REM storeToURL can raises com.sun.star.io.IOException! Only now:
On Error GoTo Errorhandle
REM Export
   thisComponent.storeToURL(FileN,storeParms())
   MsgBox ("No Error Found,Upload file is saved : """ + ConvertFromUrl(FileN) + """.")
Exit Sub

Errorhandle:
    MsgBox ("Modifications Are Not Saved,Upload File Not Generated" & chr(13) _
    & "May be table " & ConvertFromUrl(FileN) & " is open in another window?")
    Exit Sub
    Resume
End Sub

(发布于 2011 年 11 月 18 日 there)

【讨论】:

以上是关于LibreOffice Calc 宏将命名工作表保存在 csv 文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 libreoffice writer 中使用 python 宏将文本插入斜体或粗体等

从 LibreOffice Calc 工作簿导入

如何使用 LibreOffice 宏将 os.system() 命令写入 python 脚本并执行它?

如何从 Libreoffice Calc 工作簿的所有工作表中删除所有图像

正则表达式匹配单元格公式,其中工作表名称与 LibreOffice Calc 中的 uderscore aka Sheet1_2

如何从命令行 Python 脚本将所有工作表保存在 LibreOffice Calc 电子表格中