xlwings 是否可以将文件保存为 csv?

xlwings is it possible to save file as csv?

我现在已经搜索这个答案大约 2 个小时了。

是否可以将新创建​​的工作簿保存为 csv 或 csv-utf8 文件???

我知道如何将它保存为 xlsx xlsm 等,但 csv 似乎不起作用。

保存部分代码如下:

wb = xw.Book()
wb.sheets.add('Ceny')
wb.sheets['Ceny'].range('A1').options(index=False, header=False).value = mainDF
wb.save(r'D:\mainDF.csv')
wb.app.quit()

我得到的错误:

file_format = ext_to_file_format[target_ext]
KeyError: '.csv'

我读到我应该将文件格式分开并可能使用 saveas ??但我不知道该怎么做:(

我认为它目前不受支持,因为我在 macOS 上的实施遇到了一些问题。有效的方法是使用 Python 工具来完成,像这样:

import xlwings as xw
import csv

sheet = xw.books.active.sheets.active

with open('mycsv.csv', 'w') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(sheet.used_range.value)

您可以使用类似这样的东西,但它有点混乱 - 当您 运行 这段代码时,将弹出一个 Excel 的实例。

此外,据我所知,它 OS 特定于 Windows。

import pandas as pd
import xlwings as xw
from xlwings.constants import FileFormat

mainDF = pd.DataFrame({'Field1':[1,2,3,4], 'Field2':['a', 'b', 'c', 'd']})

with xw.App() as app:
    wb = app.books.add()
    wb.sheets.add('Ceny')
    wb.sheets['Ceny'].range('A1').options(index=False, header=False).value = mainDF
    wb.api.SaveAs(r'C:\Test\PythonExamples\mainDF.csv', FileFormat:=FileFormat.xlCSV)