Python xlsxwriter – hex2dec多个单元格
我从CSV数据创build工作表,我想创build一个新的工作表,并将所有(hex)数据转换为十进制格式。 我的问题是如何将每个单元格映射到工作表1,并将其全部放入工作表2,其中唯一的区别是单元格上的= HEX2DEC(..)。
from xlsxwriter.workbook import Workbook for csvfile in ['hexData']: workbook = Workbook(csvfile + '.xlsx') worksheet = workbook.add_worksheet('hexSheet') worksheet2 = workbook.add_worksheet('decSheet') with open(csvfile, 'rb') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): worksheet.write(r, c, col) with open(csvfile, 'rb') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): worksheet2.write_formula(r, c, 'HEX2DEC(hexSheet!A2:hexSheet!F16)')
结果是#VALUE! 在dec工作表的所有单元格上。 当我手动应用该公式时,会出现同样的问题,所以它可能是我对公式本身应用于多个单元格的误解。
将欣赏这方面的一些方向。
干杯
当我手动应用该公式时,会发生同样的问题,所以可能是我对公式本身应用于多个单元格的误解。
正确。 如果公式在Excel 中无效,则在由XlsxWriter创build的文件中不会有效 。
在这种情况下的问题是,在Excel中的HEX2DEC()
只需要一个单一的值,你传递一个范围。 所以你需要这样的东西:
worksheet2.write_formula(r, c, 'HEX2DEC(hexSheet!A2')
这是一个基于你的完整工作示例。
import csv from xlsxwriter.workbook import Workbook from xlsxwriter.utility import xl_rowcol_to_cell for csvfile in ['hexData.csv']: workbook = Workbook(csvfile + '.xlsx', {'strings_to_numbers': True}) worksheet_hex = workbook.add_worksheet('hexSheet') worksheet_dec = workbook.add_worksheet('decSheet') with open(csvfile, 'rb') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): worksheet_hex.write(r, c, col) worksheet_dec.write_formula(r, c, 'HEX2DEC(hexSheet!%s)' % xl_rowcol_to_cell(r, c)) workbook.close()
输出 :
注意:
- 如果需要,
strings_to_numbers
在工作簿构造函数中使用strings_to_numbers
。 - 两个循环合并成一个。
- XlsxWriter
xl_rowcol_to_cell()
函数用于创build单元名称。
另外请注意,在Python中执行hex2dec转换可能会更好,而不是使用Excel公式。