使用 python 的 pandas 读取 Excel 表格数据,然后进行处理。对 DataFrame 输出成 Excel,然后用 Excel 打开,面对类似于此种数据时(=61-A106-X20 ),Excel 会默认作为公式显示成计算结果,而无法正确显示为字符串型式,需双击单元格后才能正确显示。求解决办法。 尝试使用此种代码对数据格式进行转换仍有问题:
writer = pd.ExcelWriter('haha.xlsx', engine='xlsxwriter')
data_cabling.to_excel(writer, sheet_name='Sheet1')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'num_format': '@'})
worksheet.set_column('A:BA', 18, format1)
writer.save()
1
leschans 2020-08-15 22:05:40 +08:00 via iPhone
‘= 呢
|
3
levelworm 2020-08-15 22:10:02 +08:00 via Android
前面加个单引号试试看,在 Excel 里就是这样。
|
4
huqay OP @levelworm 这样是可以显示成字符串,但是输出成 Excel 后打开会是‘=61-A106-X20 还是需要一个一个地双击单元格才可以变成=61-A106-X20 。
|
5
levelworm 2020-08-16 02:21:01 +08:00 via Android
@huqay 问题是 Excel 里就是这样吧,你总得先打单引号,然后他会识别。可能我还是没搞清楚你的需求。。。
|
8
cassidyhere 2020-08-16 14:38:13 +08:00 via Android
pd.read_excel 有个可选参数 parse_cols
|
9
volvo007 2020-08-16 22:04:43 +08:00
如果你把这些公式单元格,转化成 text 类型,它们就不显示公式的运算结果,而是直接把公式放在上面了
如果方便在 Excel 里面预先操作的,可以把这些单元格转为 text (选中非常简单,全选后 按 F5 然后 special 里面只选择公式单元格即可) 如果要直接用 py 处理,不清楚类似 xlsxwriter,xlrd 或者其他的库,有没有类似的功能——就是不读取计算后的数据,而只读取原来输入的内容 |
10
volvo007 2020-08-16 22:08:03 +08:00
@volvo007 找到了,是 openpyxl 这个库,可以用 data_only 参数决定读取的是公式本身,还是计算后的结果
|
12
volvo007 2020-08-17 21:52:10 +08:00
|
13
volvo007 2020-08-17 22:57:09 +08:00
@huqay 我翻了下 openpyxl 的手册,半天也没看到保存公式为文本的方法。尽管也有个你用到的 number_format 属性可以设置为 @ ,然而结果还是保存了公式计算后的结果为文本,而不是直接把公式保存为文本……
但如果公式前面加单引号,一样会遇到需要点一下才能识别为文本的问题……好吧…… |
15
huqay OP 万万没想到,我还是解决了这个问题。
用了一个不太优雅的办法: 首先人工对原 Excel 文件进行格式设置,把所有单元格设置为文本格式。 然后使用 xlrd 对文件进行写入,只写入值,不改变格式。然后就可以了~ |