You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyUno操作Calc:如何导出单个工作表为CSV及获取文件名?

解决PyUno导出活动工作表为CSV及获取文件名问题

一、导出活动工作表为CSV

导出活动工作表为CSV,可通过LibreOffice UNO的文档存储接口实现,需指定CSV过滤参数并仅导出当前工作表。在你的脚本中添加以下逻辑:

import unohelper
from com.sun.star.beans import PropertyValue

def export_active_sheet_to_csv(model, output_path):
    # 将本地路径转换为UNO兼容的URL格式(Windows路径需写成file:///C:/xxx.csv)
    output_url = uno.systemPathToFileUrl(output_path)
    
    # 配置CSV导出属性
    filter_props = []
    # 指定CSV过滤器类型
    prop = PropertyValue()
    prop.Name = "FilterName"
    prop.Value = "Text - txt - csv (StarCalc)"
    filter_props.append(prop)
    
    # 设定仅导出当前活动工作表
    prop = PropertyValue()
    prop.Name = "Selection"
    prop.Value = model.CurrentController.ActiveSheet
    filter_props.append(prop)
    
    # 设置字符编码(可选,默认UTF-8)
    prop = PropertyValue()
    prop.Name = "CharacterSet"
    prop.Value = "UTF-8"
    filter_props.append(prop)
    
    # 设置字段分隔符(可选,默认逗号)
    prop = PropertyValue()
    prop.Name = "FieldSeparator"
    prop.Value = ","
    filter_props.append(prop)
    
    # 执行导出,第二个参数0表示覆盖已有文件
    model.storeToURL(output_url, tuple(filter_props))

# 调用导出函数,替换为你的目标路径
export_active_sheet_to_csv(model, "/path/to/your/target.csv")

二、获取已打开文件的名称

通过文档模型的两个方法可获取文件信息:

  • getURL():返回文件的完整路径URL(格式如file:///path/to/your/file.xlsx),可通过uno.fileUrlToSystemPath()转换为本地系统路径
  • getTitle():直接返回不含路径的文件名(如file.xlsx)

添加以下代码即可获取:

# 获取完整本地文件路径
file_url = model.getURL()
local_file_path = uno.fileUrlToSystemPath(file_url)
print(f"完整文件路径:{local_file_path}")

# 获取仅文件名(不含路径)
file_name = model.getTitle()
print(f"文件名:{file_name}")

注意:若文件未保存过,getURL()会返回空字符串,getTitle()则显示默认名称(如Untitled 1)。

内容的提问来源于stack exchange,提问作者fudo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:16:15