使用 openpyxl 1.8.6 将 excel 单元格编号格式 "General" 更改为 "Text"
Change excel cell number format "General" to "Text", using openpyxl 1.8.6
如何将 excel 单元格数字格式 General
更改为 Text
而不管单元格中的数据?
我正在使用 openpyxl 1.8.6。
数字格式仅适用于数字。如果您想将数字更改为文本,则必须更改数据类型:
ws['A1'] = str(ws['A1'].value)
不再支持版本 1.8.6。您应该考虑升级到更新的版本。
我知道这个问题真的很老了,但它可能仍然是相关的,因为我刚刚在谷歌搜索同样的东西时发现了它。以上大部分时间都有效,但在 Excel 开始表现得像我过去认识的人,并认为一切都是约会的烦人情况下。 ;)
我会这样做:
cell = ws['A1']
cell.number_format = '@'
'@'
是强制文本格式的占位符。文档建议这适用于版本 1.8.6 以及最新版本。
基于@SuperScienceGrl 的精彩回答:
from openpyxl.styles import numbers
cell.number_format = numbers.FORMAT_TEXT
您可以在他们的 official readthedocs page
查看完整的格式列表
正在将@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)
如何将 excel 单元格数字格式 General
更改为 Text
而不管单元格中的数据?
我正在使用 openpyxl 1.8.6。
数字格式仅适用于数字。如果您想将数字更改为文本,则必须更改数据类型:
ws['A1'] = str(ws['A1'].value)
不再支持版本 1.8.6。您应该考虑升级到更新的版本。
我知道这个问题真的很老了,但它可能仍然是相关的,因为我刚刚在谷歌搜索同样的东西时发现了它。以上大部分时间都有效,但在 Excel 开始表现得像我过去认识的人,并认为一切都是约会的烦人情况下。 ;)
我会这样做:
cell = ws['A1']
cell.number_format = '@'
'@'
是强制文本格式的占位符。文档建议这适用于版本 1.8.6 以及最新版本。
基于@SuperScienceGrl 的精彩回答:
from openpyxl.styles import numbers
cell.number_format = numbers.FORMAT_TEXT
您可以在他们的 official readthedocs page
查看完整的格式列表正在将@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)