xlwings 可以将文件另存为 csv 吗?

问题描述 投票:0回答:3

我现在正在寻找这个答案大约两个小时。

是否可以将新创建的工作簿保存为 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 ?但我不知道该怎么做:(

python csv xlwings
3个回答
1
投票

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

此外,据我所知,它是特定于 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)

1
投票

我认为目前不支持它,因为我在 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)

0
投票

似乎没有直接的方法将工作表另存为 csv 文件。 其他迭代范围内每一行的方法太慢或不稳定。 如果我们使用剪贴板,该过程会快速且可靠。

#dependency
import pyperclip
import xlwings as xw

    wb = xw.Book(filename)
    sht=wb["sheetname"]

#copy selected data to clipboard first
    real_range = sht["A1"].expand()
    real_range.clear_formats()
    real_range.select()
    real_range.copy()

#use clipboard data
    csv_data = pyperclip.paste()
    
    with open(OutputCsvFile, 'w') as file:
        csv_writer = csv.writer(file, delimiter=",")
        for row in csv_data.split("\n"):
            csv_writer.writerow(row.split("\t"))

    print("%s output successfully!\n" % OutputCsvFile)
© www.soinside.com 2019 - 2024. All rights reserved.