最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)調(diào)整Excel的內(nèi)容高度

 更新時間:2026年05月17日 10:19:52   作者:清山博客  
本文介紹了一種自動調(diào)整Excel行高的Python實現(xiàn)方法,代碼實現(xiàn)了自動計算行高、批量處理多個Excel文件的功能并提供了進(jìn)度提示,希望對大家有所幫助

本文介紹了一種自動調(diào)整Excel行高的Python實現(xiàn)方法。通過openpyxl庫遍歷Excel文件中的每個工作表,計算每行文字最多單元格所需的高度(考慮字體大小、換行數(shù)和列寬),自動調(diào)整行高以確保內(nèi)容完整顯示。代碼實現(xiàn)了自動計算行高、批量處理多個Excel文件的功能,并提供了進(jìn)度提示。該方法可顯著減少手動調(diào)整行高的工作量,特別適合處理大量數(shù)據(jù)的Excel文件。使用前需備份原文件,代碼會直接修改原Excel文件。

背景介紹

有時在打印EXCEL時,單元格內(nèi)容較多,需多行顯示,類似這樣:

在打印時,需保證單元格內(nèi)的內(nèi)容全部可見。需手動調(diào)整每一行高度,如果數(shù)據(jù)行很多,也是不少的工作量。

實現(xiàn)思路

1.利用程序遍歷EXCEL中的每個Sheet,遍歷每行。

2.定位該行文字最多那個單元格。

3.計算文字最多的單元格高度,單元格寬度,文字大小、換行數(shù)、預(yù)留邊距計算出該行高度。

4.修改此行高度為第3步計算出的高度,使得該行所有文本可見。

實現(xiàn)步驟

1.安裝Python操作EXCEL的庫

pip install openpyxl

2.編寫代碼

以下代碼會將代碼所在文件夾下的EXCEL進(jìn)行讀取,并處理行高度。

注意:代碼會修改原文件,操作前請備份原文件。

#pip install openpyxl


import os
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
from openpyxl.styles import Alignment

def calculate_row_height(cell, column_width, padding=5):
    """
    計算單元格內(nèi)容所需的行高度
    :param cell: 單元格對象
    :param column_width: 列寬(以字符數(shù)為單位)
    :param padding: 上下留白距離(磅)
    :return: 計算后的行高度(磅)
    """
    if cell.value is None:
        return None
    
    # 獲取單元格字體信息
    font = cell.font
    font_size = font.size if font.size else 11
    
    # 獲取單元格內(nèi)容
    text = str(cell.value)
    
    # 計算顯式換行符的行數(shù)
    explicit_lines = text.count('\n') + 1
    
    # 考慮列寬計算自動換行
    if column_width > 0:
        # 計算文本總字符數(shù)(中文按2個字符計算,因為中文更寬)
        total_chars = 0
        for char in text:
            if '\u4e00' <= char <= '\u9fff':  # 中文字符范圍
                total_chars += 3
            elif char == '\n':
                continue
            else:
                total_chars += 1
        
        # 根據(jù)列寬和字體大小計算每行可容納的字符數(shù)
        # 字體越大,每行可容納的字符數(shù)越少
        font_ratio = 11 / font_size
        chars_per_line = column_width * font_ratio
        
        if chars_per_line > 0 and total_chars > 0:
            # 計算自動換行所需的行數(shù)
            auto_wrap_lines = max(1, int((total_chars + chars_per_line - 1) / chars_per_line))
            # 取顯式換行和自動換行的較大值
            total_lines = max(explicit_lines, auto_wrap_lines)
        else:
            total_lines = explicit_lines
    else:
        total_lines = explicit_lines
    
    # 行高計算:字體大小 * 行數(shù) + 上下留白
    base_height = font_size * 1.4
    row_height = base_height * total_lines + padding * 2
    
    return row_height

def adjust_excel_row_heights(file_path):
    """
    調(diào)整Excel文件中所有行的高度
    :param file_path: Excel文件路徑
    """
    try:
        # 加載工作簿
        wb = load_workbook(file_path)
        
        for sheet_name in wb.sheetnames:
            ws = wb[sheet_name]
            print(f"正在處理工作表: {sheet_name}")
            
            # 獲取最大行和最大列
            max_row = ws.max_row
            max_col = ws.max_column
            
            if max_row < 2:
                print("  工作表數(shù)據(jù)不足,跳過")
                continue
            
            # 從第2行開始遍歷
            for row in range(2, max_row + 1):
                max_height = None
                
                # 遍歷當(dāng)前行的所有單元格
                for col in range(1, max_col + 1):
                    cell = ws.cell(row=row, column=col)
                    cell.alignment = Alignment(wrap_text=True, vertical='center', horizontal='center')
                    col_letter = get_column_letter(col)
                    column_width = ws.column_dimensions[col_letter].width
                    if column_width is None or column_width == 0:
                        column_width = 8.43
                    height = calculate_row_height(cell, column_width)
                    
                    if height is not None:
                        if max_height is None or height > max_height:
                            max_height = height
                
                # 如果計算出了高度,則設(shè)置行高
                if max_height is not None:
                    ws.row_dimensions[row].height = max_height
                    # 打印進(jìn)度信息(每10行打印一次)
                    if (row - 1) % 10 == 0:
                        print(f"  已處理第 {row} 行,行高設(shè)置為 {max_height:.1f} 磅")
        
        # 保存文件
        wb.save(file_path)
        print(f"文件 {file_path} 已成功保存!")
        
    except Exception as e:
        print(f"處理文件 {file_path} 時出錯: {str(e)}")

if __name__ == "__main__":
    # 獲取當(dāng)前目錄下所有xlsx文件(排除臨時文件)
    xlsx_files = [f for f in os.listdir('.') if f.endswith('.xlsx') and not f.startswith('~$')]
    
    if not xlsx_files:
        print("當(dāng)前目錄下沒有找到Excel文件")
    else:
        print(f"找到 {len(xlsx_files)} 個Excel文件")
        for file in xlsx_files:
            print(f"\n處理文件: {file}")
            adjust_excel_row_heights(file)
        print("\n處理完成!")

調(diào)整后結(jié)果

雖然使用場景不多,不過工作中遇到了,在此記錄一下。

到此這篇關(guān)于Python實現(xiàn)調(diào)整Excel的內(nèi)容高度的文章就介紹到這了,更多相關(guān)Python調(diào)整Excel內(nèi)容高度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 爬蟲Python驗證碼識別入門

    爬蟲Python驗證碼識別入門

    這篇文章主要介紹了爬蟲Python驗證碼識別,屬于入門級別的介紹,剛接觸爬蟲的朋友可以參考如下
    2021-08-08
  • 玩數(shù)據(jù)必備Python庫之numpy使用詳解

    玩數(shù)據(jù)必備Python庫之numpy使用詳解

    NumPy提供了許多高級的數(shù)值編程工具,如矩陣數(shù)據(jù)類型、矢量處理,以及精密的運算庫,下面這篇文章主要給大家介紹了關(guān)于玩數(shù)據(jù)必備Python庫之numpy使用的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • Python+Turtle繪制蜘蛛俠的示例代碼

    Python+Turtle繪制蜘蛛俠的示例代碼

    蜘蛛俠(Spider-Man)即彼得·帕克(Peter Parker),是美國漫威漫畫旗下超級英雄。本文主要介紹運用python中的turtle庫控制函數(shù)繪制蜘蛛俠,感興趣的可以嘗試一下
    2022-06-06
  • python基于tkinter制作無損音樂下載工具(附源碼)

    python基于tkinter制作無損音樂下載工具(附源碼)

    這篇文章主要介紹了python基于tkinter制作無損音樂下載工具(附源碼),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python?Ast抽象語法樹的介紹及應(yīng)用詳解

    Python?Ast抽象語法樹的介紹及應(yīng)用詳解

    這篇文章主要為大家介紹了Python?Ast抽象語法樹的介紹及應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • python plt如何保存為emf圖像

    python plt如何保存為emf圖像

    這篇文章主要介紹了python plt如何保存為emf圖像問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python requests包的request()函數(shù)中的參數(shù)-params和data的區(qū)別介紹

    python requests包的request()函數(shù)中的參數(shù)-params和data的區(qū)別介紹

    這篇文章主要介紹了python requests包的request()函數(shù)中的參數(shù)-params和data的區(qū)別介紹,具有很好參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 在DOS界面如何運行python的py文件

    在DOS界面如何運行python的py文件

    這篇文章主要介紹了在DOS界面如何運行python的py文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python實現(xiàn)磁盤日志清理的示例

    python實現(xiàn)磁盤日志清理的示例

    這篇文章主要介紹了python實現(xiàn)磁盤日志清理的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • 詳解如何用TensorFlow訓(xùn)練和識別/分類自定義圖片

    詳解如何用TensorFlow訓(xùn)練和識別/分類自定義圖片

    這篇文章主要介紹了詳解如何用TensorFlow訓(xùn)練和識別/分類自定義圖片,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評論

寻乌县| 丹东市| 札达县| 徐水县| 思茅市| 梅州市| 邮箱| 长沙市| 莱西市| 子长县| 婺源县| 慈利县| 芷江| 呼和浩特市| 雷山县| 壤塘县| 津市市| 个旧市| 资源县| 西宁市| 太湖县| 弥渡县| 唐海县| 玉山县| 根河市| 舟山市| 洛川县| 固镇县| 南投市| 华蓥市| 明光市| 若尔盖县| 醴陵市| 石泉县| 孝昌县| 金溪县| 息烽县| 景谷| 乌什县| 双桥区| 兴义市|