簡體   English   中英

如何使用openpyxl計算excel表格單元格范圍中的最大字符串長度值?

[英]How to calculate the max string length value in excel sheet cell range using openpyxl?

我嘗試了很多不同的方法來計算具有字符串值的單元格范圍內的最大字符串長度值。 目標是獲取最大字符串長度,然后將每列寬度設置為此最大字符串長度。 下面的代碼是在將字符串值輸入到單元格范圍后實現的,但有些行不會輸入任何值。如果它的第一個單元格值不是字符串,我的代碼假設跳過任何行。 我輸入到 excel 范圍內的值超出了第一個單元格,因此我只需檢查每一行的第一個單元格的值即可知道該行沒有任何值。 我嘗試以類似於在線示例的方式使用iter_rows()iter_cols()來完成此操作,但我無法找到解決方案。 我得到的錯誤是index in range(len(col)): TypeError: object of type 'int' has no len() 我使用的模塊是openpyxl ,我在 load_workbook 語句中設置了 data_only = True 此外, col正在引用一個列表,該列表包含字母表的字母,直到具有任何值的最后一列。

任何人都可以幫助或給我任何建議嗎?

    maxLen = 0
    for row in range(1, ws.max_row):
        if type(ws.cell(row, 1).value) == str:

            for col in range(1, ws.max_column - 1):
                if len(ws.cell(row, col).value) > len(ws.cell(row, col + 1).value):
                    maxLen = len(ws.cell(row, col).value)
                else:
                    maxLen = len(ws.cell(row, col + 1).value)
        else:
            continue

    for index in range(len(col)):
        ws.column_dimensions[f'{col[index]}'].width = maxLen

Excel 有這個奇怪的計算,如果你想要精確,它會強制你在像素和點之間進行,這里有一些函數可以為你進行轉換,但是如果你想讓列適合整個字符串,有更短的方式。

Private Sub Workbook_Open()

    Dim ws as Worksheet : set ws = ThisWorkbook.Sheets("Sheet1")
    ws.Columns("A:Z").Autofit

End Sub

您可以在其中創建一個包含此 sub 的 excel 模板文件,openpyxl 在創建新文件時使用該文件。

wb = load_workbook('template.xltm', keep_vba=True)
wb.save('new_document.xlsm')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM