1

我尝试了几种方法,包括pandas

df = pd.read_excel('file.xlsx')
df.to_csv('file.csv')

但是每次我将xlsx文件转换为csv格式时,我都会丢失包含公式的列中的所有数据。我有一个公式,它连接来自其他两个单元格的值 + '@domain' 以创建用户电子邮件,但是整个列在csv产品中返回空白。公式基本上是这样的:

=CONCATENATE(B2,".",E2,"@domain")

转换是更大的代码工作流的一部分,但如果此列留空,它将不起作用。我尝试过的唯一有效的是这个API,但如果这可以在机器上本地完成,我宁愿不支付订阅费。

有任何想法吗?我会尝试你扔给我的任何东西 - 请记住我是新手,但我会尽力而为!

4

1 回答 1

1

可以尝试在data-only模式下用openpyxl库打开excel文件。这将阻止原始公式 - 它们将按照您在 excel 本身中看到它们的方式进行计算。

import openpyxl 

wb = openpyxl.load_workbook(filename, data_only=True)

当您使用原始文件时要小心,并在 -mode 中使用 openpyxl-lib 保存它,data-only所有公式都将丢失。我有过这个,太可怕了。所以我建议使用你的文件的副本来处理。

由于您的 xlsx 文件只有值,您现在可以使用内部 csv 库生成正确的 csv 文件(来自这篇文章的想法:如何将 Excel 工作表另存为 CSV):

import csv

sheet = wb.active # was .get_active_sheet()
with open('test.csv', 'w', newline="") as f:
    c = csv.writer(f)
    for r in sheet.iter_rows(): # generator; was sh.rows
        c.writerow([cell.value for cell in r])
于 2021-09-23T05:58:02.057 回答