python - Python函数将变量输入字符串
问题描述
我已经使用 xlsxwriter 将 pandas df 输出到 excel 文件中。我正在尝试在顶部创建一个总计行。为此,我正在尝试创建一个函数,该函数根据我选择的列动态填充总数。
这是我打算做的一个例子:
worksheet.write_formula('G4', '=SUM(G4:G21)')
#G4 = Where total should be placed
我需要这是一个函数,因为行数可以改变(总和范围应该是动态的),并且我希望有一种简单的方法可以将此公式应用于各个列。
因此,我想出了以下内容:
def get_totals(column):
start_row = '4' #row which the totals will be on
row_count = str(tl_report.shape[0]) #number of rows in the table so I can sum up every row.
return (worksheet.write_formula(str(column+start_row),"'=SUM("+str(column+start_row)+":"+str(column+row_count)+")'") )
运行 get_totals("G") 时它只会导致 0。我怀疑它与我必须应用的 STR 运算符有关,因为它在公式中添加了单引号,因此不正确地呈现它。
但是我不能去掉 str 运算符,因为我显然不能连接 INT?
也许我编码这一切都是错误的,python 新手,任何帮助表示赞赏。
谢谢!
解决方案
在几乎所有情况下,XlsxWriter 方法都支持两种形式的表示法来指定单元格的位置:行列表示法和 A1 表示法。
行列表示法对行和列都使用从零开始的索引,而 A1 表示法使用列字母和从 1 开始的行的标准 Excel 字母数字序列。例如:
(6, 2) # Row-column notation.
('C7') # The same cell in A1 notation.
因此,对于您的情况,您可以执行以下操作并以编程方式设置行列值(您可能必须调整 -1 以获得零索引):
worksheet.write_formula(start_row, start_column, '=SUM(G4:G21)')
对于您可以使用 XlsxWriter 的实用程序函数的公式:
from xlsxwriter.utility import xl_range
my_range = xl_range(3, 6, 20, 6) # G4:G21
推荐阅读
- python - 如何将 aio-pika 与 FastAPI 一起使用?
- git - 如何在 Github Actions 中获取子模块的最新提交文件,以便在构建过程中使用它?
- java - 使用 OffsetDateTime 查询表时收到 IllegalArgumentException
- c# - RawGameController.GetCurrentReading 不更新 UWP 中的数组
- docker - Jenkins 管道无法登录到 docker hub
- css - Woocommerce + 金融问题
- python - Plotly 下拉选择无法正确更新绘图
- javascript - Javascript 练习:删除给定元素之前的所有数组元素
- r - r - 使用 r 从 s3 读取 zip 文件
- c# - ASP.Net Core API 响应需要太多时间