强制pandas.to_excel将数据写入“文本”而不是“常规”格式

fslejnso  于 2024-01-04  发布在  其他
关注(0)|答案(3)|浏览(175)

我已经在目标Excel列中将单元格格式设置为“Text”。但是,当向该列写入字符串时,pandas.to_excel将格式更改为“General”,最终该列的空白单元格将被格式化为“Text”,非空白单元格将被格式化为“General”。是否有办法将数据写入“Text”而不是“General”?

def exportData(df, dstfile, sheet):
    book = load_workbook(dstfile)
    writer = pd.ExcelWriter(dstfile, engine='openpyxl', date_format='dd/mm/yyyy', datetime_format='mm/dd/yyyy hh:mm')
    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
    df.to_excel(writer, header=False, startrow=2, index=False, sheet_name=sheet)
    writer.save()

字符串

fnatzsnv

fnatzsnv1#

你需要做的就是将pandas中的数据保存为'object'(这是文本),如下所示:

df = pd.DataFrame(data=d, dtype=object)

字符串
之后,如果您使用pandas to_excel方法导出到Excel,它将以文本形式存储在Excel中。

dluptydi

dluptydi2#

可以使用以下方法覆盖单元格。
要格式化为TEXT的单元格只需用途:

cell.number_format = '@'

字符串
这将在Excel中将单元格格式设置为TEXT
可能有一种方法可以直接从Pandas中的ExcelWriter中完成它,但我对此并不熟悉,也许更了解的人也会编辑该选项的答案。

ncgqoxb0

ncgqoxb03#

可以使用以下代码应用数字格式(Excel术语)导入到导出的pandas对象。而不是Excel中默认用于导出pandas对象的 “General” 数字格式,可以指定 “文本” 数字格式。使用 “文本” 数字格式还可以防止在进入“编辑”模式时numbers change to dates(Excel中的快捷方式F2),然后按Enter。截至本答案发布之日,以下代码似乎是最短的方法:

import pandas as pd

df = pd.DataFrame([["23-3", "21-1"],
                   ["8-5", "6-7"]], columns=["A", "B"])

# @ is the number format code of Excel for the "Text" number format.
df.style.map(lambda v: "number-format: @").to_excel(r"test.xlsx")

字符串
最后一行代码的功劳应该归于pandas documentation

相关问题