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公式。