将 csv 转换为 xlsx 时,如何在 xlsxwriter 中保留一列数字作为字符串?
How to keep one column with numbers as string in xlsxwriter while converting csv to xlsx?
我正在使用此处的脚本 convert-csv-to-xlsx 进行少量修改的转换(我添加了几个参数,包括 'strings_to_numbers': True ):
import os
import glob
import csv
from xlsxwriter.workbook import Workbook
for csvfile in glob.glob(os.path.join('.', '*.csv')):
workbook = Workbook(csvfile[:-4] + '.xlsx', {'constant_memory': True, 'strings_to_urls': False, 'strings_to_numbers': True})
worksheet = workbook.add_worksheet()
with open(csvfile, 'rt', encoding='utf8') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
print(r)
workbook.close()
一切正常,但当我添加上述参数时,我将所有数字作为我的 xlsx 文件中的数字获取。我需要将一列(第一列)保留为字符串,因为有很长的数字可以转换(由于 excel 数字长度限制)像这样 1,04713E+18 example
也许我需要删除参数并在末尾将所需的列从字符串转换为数字。这可能吗?
基于 Workbook 文档。 strings_to_numbers
将 string
转换为 float
。没有将 string
转换为 int
的参数。因此,您需要手动进行转换。
而不是worksheet.write(r, c, col)
。你需要做 worksheet.write_number(r, c, col)
。此外,您需要将 col
转换为 int(col)
。
可以通过正则表达式或任何其他方法检查数字。
我正在使用此处的脚本 convert-csv-to-xlsx 进行少量修改的转换(我添加了几个参数,包括 'strings_to_numbers': True ):
import os
import glob
import csv
from xlsxwriter.workbook import Workbook
for csvfile in glob.glob(os.path.join('.', '*.csv')):
workbook = Workbook(csvfile[:-4] + '.xlsx', {'constant_memory': True, 'strings_to_urls': False, 'strings_to_numbers': True})
worksheet = workbook.add_worksheet()
with open(csvfile, 'rt', encoding='utf8') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
print(r)
workbook.close()
一切正常,但当我添加上述参数时,我将所有数字作为我的 xlsx 文件中的数字获取。我需要将一列(第一列)保留为字符串,因为有很长的数字可以转换(由于 excel 数字长度限制)像这样 1,04713E+18 example
也许我需要删除参数并在末尾将所需的列从字符串转换为数字。这可能吗?
基于 Workbook 文档。 strings_to_numbers
将 string
转换为 float
。没有将 string
转换为 int
的参数。因此,您需要手动进行转换。
而不是worksheet.write(r, c, col)
。你需要做 worksheet.write_number(r, c, col)
。此外,您需要将 col
转换为 int(col)
。
可以通过正则表达式或任何其他方法检查数字。