使用xlsxwriter写入Excel公式时如何替换文本文件中的本地变量
xlsxwriter批量加载外部公式并动态替换行号方案
需求说明
使用xlsxwriter构建Excel工作表时,需要将可遍历调用的公式存储在外部文本文件中批量读取,写入单元格前要把公式模板里的行号占位符替换为当前遍历的实际行号,拼接为完整公式后再写入对应单元格。
初始实现
初始版本未做占位符替换,直接将从formulas.txt读取的公式行原样写入Excel,代码如下:
import xlsxwriter with xlsxwriter.Workbook('output.xlsx') as workbook: worksheet = workbook.add_worksheet('Sheet 1') col = 0 # 读取并遍历formulas.txt with open('formulas.txt', 'r') as formula_file: for formula_line in formula_file: row = 0 for row in range(1,5): row_as_str = str(row) worksheet.write(row, col, formula_line) col += 1
公式模板文件格式
formulas.txt中存储带row_as_str行号占位符的公式拼接模板,内容如下:
"=ROUND(K" + row_as_str + "*M" + row_as_str + ",2)" "=ROUND(K" + row_as_str + "*N" + row_as_str + ",2)" "=ROUND(K" + row_as_str + "*O" + row_as_str + ",2)" "=ROUND(K" + row_as_str + "*P" + row_as_str + ",2)" "=ROUND(K" + row_as_str + "*Q" + row_as_str + ",2)" "=ROUND(K" + row_as_str + "*R" + row_as_str + ",2)"
注:公式的存储载体不局限于文本文件,可根据实际场景选择其他存储形式。
可行实现方案
核心处理逻辑:逐行读取公式模板后,将模板中固定的占位符片段" + row_as_str + "替换为当前遍历得到的实际行号字符串,处理完成后调用write_formula方法将合法公式写入对应单元格,完整代码如下:
import xlsxwriter with xlsxwriter.Workbook(r'output2.xlsx') as workbook: worksheet = workbook.add_worksheet('Sheet 1') col = 0 # 从公式文件读取模板 counter = 5 with open('formulas.txt', 'r') as formula_file: for formula_line in formula_file: row = 0 for row in range(1, 5): row_num_str = str(row) row_as_str = ("\" + row_as_str + \"") formula = formula_line.replace(row_as_str, row_num_str) worksheet.write_formula(row, col, formula) col += 1
内容的提问来源于stack exchange,提问作者Chandler Shores
相关产品推荐
相关产品推荐

