如何将excel手机号码格式General
更改为Text
,而不管单元格中的数据是什么?
我正在使用openpyxl 1.8.6。
答案 0 :(得分:5)
我知道这个问题确实很老,但是当我对同一件事进行谷歌搜索时,它仍然很有意义。上面的代码在大多数情况下都会起作用,但是在那些令人讨厌的情况下,Excel开始像我过去认识的家伙那样工作,并且认为一切都是约会。 ;)
我会这样:
cell = ws['A1']
cell.number_format = '@'
'@'
是一个占位符,用于强制文本格式设置。文档建议此功能适用于1.8.6版以及最新版本。
答案 1 :(得分:2)
基于@SuperScienceGrl的出色答案:
from openpyxl.styles import numbers
cell.number_format = numbers.FORMAT_TEXT
您可以在他们的official readthedocs page上查看格式的完整列表
答案 2 :(得分:0)
数字格式仅适用于数字。如果要将数字更改为文本,则必须更改数据类型:
ws['A1'] = str(ws['A1'].value)
不再支持1.8.6版。您应该考虑升级到更新版本。
答案 3 :(得分:0)
将@run_the_race答案应用于列:
#!/usr/bin/env python3
from openpyxl import load_workbook
from openpyxl.styles import numbers
xlsx_file = 'file.xlsx'
# openning:
wb = load_workbook(filename = xlsx_file)
# set column O of default sheet to be text:
ws = wb.active
for row in ws[2:ws.max_row]: # skip the header
cell = row[14] # column O
cell.number_format = numbers.FORMAT_TEXT
# saving:
wb.save(xlsx_file)
与包裹在脚本中的包裹相同,接受列“名称”,例如AA
:
#!/usr/bin/env python3
import argparse
from openpyxl import load_workbook
from openpyxl.styles import numbers
# ==============
## parsing args:
desc="""
Converts given column of the xlsx file (default sheet) to a text format.
Dependencies:
pip3 install --user --upgrade openpyxl
"""
parser = argparse.ArgumentParser(description=desc, formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('--version', action='version', version='%(prog)s 0.01')
parser.add_argument('-f', '--file',
help = "xlsx file",
dest = 'xlsx_file',
type = argparse.FileType('r'),
)
parser.add_argument('-c', '--column',
help = "column (default to %(default)s)",
dest = 'column',
type = str,
default = "A",
)
args = parser.parse_args()
# =========
## program:
xlsx_file = args.xlsx_file.name
column_number = sum(
[ ord(char) - 97 + i*26 for i,char in enumerate(
list( args.column.lower() )
) ]
)
# openning:
wb = load_workbook(filename = xlsx_file)
# convert given column of the default sheet to a text format:
ws = wb.active
for row in ws[2:ws.max_row]: # skip the header
cell = row[column_number]
cell.number_format = numbers.FORMAT_TEXT
# saving:
wb.save(xlsx_file)