使用openpyxl 1.8.6将excel单元格编号格式“General”更改为“Text”

时间:2015-04-23 20:40:39

标签: openpyxl

如何将excel手机号码格式General更改为Text,而不管单元格中的数据是什么?

我正在使用openpyxl 1.8.6。

4 个答案:

答案 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)