我想使用 openpyxl 模块自动调整 Excel 列宽,但有些数据是公式化的.我如何通过 Python 获得真正的价



我正在创建一个 PY 脚本来从我的数据库中提取数据并生成一个 Excel 电子表格。PY 脚本使用一堆不同的模块,但有问题的模块是pandas 和 openpyxl。我希望能够以类似于在Excel中完成的方式(基于内容)自动调整所有列的列宽。问题在于,一些数据使用公式来回答数据的一些常见数据分析问题,例如"有多少个唯一关键字?",据我所知,openpyxl 真的不喜欢公式。

我已经浏览了很多 Stack Overflow,我认为最接近我想要的是这样的东西:如何使用 python 的 openpyxl 模块访问单元格的真正值。但是,我尝试过的选项(包括上面的选项)都没有奏效。

以下代码是我尝试过的方法之一:

writer = pandas.ExcelWriter(file_name, engine = "openpyxl")
writer.book = openpyxl.load_workbook(file_name, data_only = True)
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
lastRow = worksheet.max_row
worksheet['L1'] = f"="Count of Unique Keywords = "&sum(--(frequency(match(A2:A{lastRow},A2:A{lastRow},0),row(A2:A{lastRow})-row(A2)+1)>0))"
print (worksheet['L1'].value)

使用上面的代码,我希望从打印中返回的是:唯一关键字计数 = 123

但相反,我得到了 Excel 函数:

="Count of Unique Keywords = "&sum(--(frequency(match(A2:A100,A2:A100, 0),row(A2:A100)-row(A2)+1)>0))

抱歉,如果这个问题已经得到回答/如果这个问题的格式不完美。这是我在Stack Overflow上问的第一个问题。

你试过吗?

worksheet['L1'] = f"="CONCATENATE("Count of Unique Keywords = ", SUM(--(FREQUENCY(MATCH(A2:A100,A2:A100, 0),ROW(A2:A100)-ROW(A2)+1)>0)))"

这将生成一个带有"唯一关键字计数="的 excel 单元格 + 假设您的函数和支持数据正常工作的公式输出。

最新更新