【问题标题】:How can I set 50 column values of excel sheet dynamically using python如何使用python动态设置excel表的50列值
【发布时间】:2021-11-17 18:25:24
【问题描述】:

实际上,我正在尝试将“测试”字符串值从第 1 列写入第 50 列(即 A 列到 AZ 列)。

我最多可以写第 26 列(即 Z 列),下面是我的代码:-

import pandas as pd

writer = pd.ExcelWriter("Sharath.xlsx", engine='xlsxwriter')
df1 = pd.DataFrame()
df1.to_excel(writer, sheet_name='Sheet1', header=True, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']

merge_format = workbook.add_format({
            'bold': True,
            'text_wrap': True,
            'border': 2,
            'align': 'center',
            'valign': 'vcenter'})

for i in range(0, 26):
    columnmerge = chr(ord('A') + i) + '{}:' + chr(ord('A') + i) + '{}'
    worksheet.set_column(chr(ord('A') + i) + ':' + chr(ord('A') + i), 20)
    worksheet.merge_range(columnmerge.format(2, 4), "Test1", merge_format)


workbook.close()
print("Excel file is closed")

writer.save()
print("Excel file is saved")
print("Report generation completed")

如果我尝试第 27 列(即 AA 列),我会遇到以下错误:-

Traceback (most recent call last):
  File "D:\test2.py", line 18, in <module>
    worksheet.set_column(chr(ord('A') + i) + ':' + chr(ord('A') + i), 20)
  File "C:\Python39\lib\site-packages\xlsxwriter\worksheet.py", line 120, in column_wrapper
    _, col_1 = xl_cell_to_rowcol(cell_1)
  File "C:\Python39\lib\site-packages\xlsxwriter\utility.py", line 121, in xl_cell_to_rowcol
    col_str = match.group(2)
AttributeError: 'NoneType' object has no attribute 'group'

谁能帮我动态地将我的字符串写成 50-100 列。

提前致谢!

【问题讨论】:

    标签: python excel pandas xlsxwriter


    【解决方案1】:

    设置列宽并使用列号合并范围:

    worksheet.set_column(i, i, 20)
    worksheet.merge_range(2, i, 4, i, "Test1", merge_format)
    

    【讨论】:

    • 不,它不工作,你执行了我的代码吗?
    • @kgsharathkumar 查看我的编辑。
    • 它对我有用!谢谢你,我已经放弃了投票! @迈克尔
    【解决方案2】:

    所有 XlsxWriter 方法都采用 (row, col) 值以及 A1 样式范围。在尝试以编程方式设置范围时,最好避免尝试构造 A1 范围,并让库根据零基行列数为您完成。

    例如,您可以通过以下方式重组程序以使用任意索引:

    import pandas as pd
    
    writer = pd.ExcelWriter('Sharath.xlsx', engine='xlsxwriter')
    df1 = pd.DataFrame()
    df1.to_excel(writer, sheet_name='Sheet1', header=True, index=False)
    
    workbook = writer.book
    worksheet = writer.sheets['Sheet1']
    
    merge_format = workbook.add_format({
                'bold': True,
                'text_wrap': True,
                'border': 2,
                'align': 'center',
                'valign': 'vcenter'})
    
    first_col = 0
    last_col = 100
    
    worksheet.set_column(first_col, last_col, 20)
    
    for col in range(last_col + 1):
        worksheet.merge_range(1, col, 3, col, 'Test1', merge_format)
    
    writer.save()
    

    输出:

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 2021-10-03
      • 1970-01-01
      相关资源
      最近更新 更多