上司はあなたが作ったエクセルシートは美しく簡潔ではないと言いましたか?Pythonでそれを成し遂げるための1つのトリックを教えてください

序文

この記事のテキストと写真はインターネットからのものであり、学習とコミュニケーションのみを目的としており、商用目的ではありません。ご不明な点がございましたら、処理についてお問い合わせください。

PS:Pythonの学習教材が必要な場合は、以下のリンクをクリックして自分で入手できます

Pythonの無料の学習資料、コード、交換回答クリックして参加


この記事では、Pythonクローラーを使用して、全国の20以上の図書館で人気のある借用本の情報をクロールし、特定のルールに従って統計をまとめ、さまざまな分野の大学生向けの必読本TOP150のリストを取得しました。ブックリストはExcelの50枚以上のシートページに保存されています。各シートページのファイルは次のようになります。

 

オリジナルエクセル

オリジナルエクセル

 

コンテンツは非常に価値がありますが、ワインの香りも路地の深さを恐れています。これらの混雑したコンテンツを見ることに誰も興味がありません。少なくとも、Excelを読みやすくするために、形式を調整し、簡単な美化を行う必要があります。 。

50ページ以上を別々にフォーマットするのは大変な作業ですが、現時点ではPythonが登場します!

Pythonを使用して、これらのExcel形式をバッチで美化し、時間を節約できます。

私はPythonのExcelの操作にxlwingsパッケージを使用しています。

xlwingsは、Excelファイルのデータを非常に便利に読み書きでき、セル形式を変更できます。また、matplotlib、numpy、およびpandasとシームレスに接続できます。numpyおよびpandasデータタイプの読み取りと書き込みをサポートし、matplotlib視覚化チャートをにインポートします。優れています。

さらに重要なのは、Excelを操作すると、その効果をリアルタイムで確認できることです。これは、Excelを処理するための私のお気に入りのPythonパッケージであると言えます。

xlwingsの使用も非常に簡単です。

import xlwings as xw

ここでは、主にその関数を使用してセル形式を変更します。
3つのステップに分けられます。
ステップ1、最初にExcelを使用してフォーマットテンプレートを作成し、行の高さ、列の幅などを調整して、sample.xlsxという名前を付けます。

行の高さと列の幅はどちらも数値であるため、コードで調整するのは直感的ではありません。そのため、メソッドはテンプレートExcelで調整されてから、ターゲットExcelに適用されます。用意されているフォーマットテンプレートは次のとおりです。

フォーマットテンプレート

フォーマットテンプレート


2番目のステップは、プログラムにこのテンプレートの形式を読み取らせ、次のすべてのシートページがこの形式に従って美化されることをプログラムに通知することです。

 


#获取样例表格的列宽数据
def get_sample_format(col):##因为无需读取整个excel所有列的列宽,所以这里传入一个读取的列宽范围参数
    wb = xw.Book("sample.xlsx")  # 建立于sample.xlsx文件的连接
    sheet = wb.sheets["sheet1"] #打开sample.xlsx文件的sheet1
    format = []
    for i in range(col):
        format.append(sheet[0,i].column_width)
    print('列宽:'+str(format))  #'行高:'+sheet.range('A1').column_width+
    wb.close()
    return format

3番目のステップは、プログラムに50枚のページをバッチで操作させ、テンプレートの列幅に従って設定し、同時にいくつかのフォント、セルの背景などを変更することです。


## 美化表格  
def beautiful_sheet(table_name,raw,col,format):
     #设置颜色
    wb2 = xw.Book(table_name)  # 建立excel表连接

    sheets_name= [st.name for st in wb2.sheets]
    for st in  sheets_name:
        sheet2 = wb2.sheets[st]
        # sheet2[0,0] =
        sheet2.range('a1').value= ['序号','书名(@知乎 东写西读整理)','总浏览次数','霸榜高校数','霸榜率','在高校榜单排名中位数','豆瓣评分','豆瓣链接(@知乎 东写西读整理)'] #更改标题行
        sheet2[0:raw,0:col+1].api.Borders(12).LineStyle = 0 #设置单元格横边框为细框线
        sheet2[0:raw, 0:col+1].api.Borders(11).LineStyle = 0 #设置单元格竖边框为细框线
        sheet2[0:raw,0:col].api.Font.Name = '微软雅黑'# 设置字体格式为微软雅黑
        sheet2[0:raw, 0:col].api.HorizontalAlignment = -4108  #设置字体居中
        sheet2[:,4].api.NumberFormat = "0%"    #“霸榜率”这一列单元格设置为百分比格式显示
        for i in range(raw): ##行遍历
                if i==0:
                    sheet2[i, 0:col].color = [217, 217, 217] #设置标题背景颜色格式
                elif i%2 ==0:
                    sheet2[i,0:col].color = [183, 222, 232]    #设置偶数行背景颜色格式为浅蓝色
        for i,item in enumerate(format): #列遍历,根据sample.xlsx中的列宽进行调整
            sheet2[0,i].column_width = item
    wb2.save()#保存excel
    wb2.close()#关闭excel
    return None

プログラムを実行すると、最適化されたExcelは次のようになります。

 

最適化

最適化

 

最後に、完全なコードを添付します。

'''
如有需要Python学习资料的小伙伴可以加群领取:1136201545
'''
import xlwings as xw

#获取样例表格的列宽数据
def get_sample_format(col):##因为无需读取整个excel所有列的列宽,所以这里传入一个读取的列宽范围参数
    wb = xw.Book("sample.xlsx")  # 建立于sample.xlsx文件的连接
    sheet = wb.sheets["sheet1"] #打开sample.xlsx文件的sheet1
    format = []
    for i in range(col):
        format.append(sheet[0,i].column_width)
    print('列宽:'+str(format))  #'行高:'+sheet.range('A1').column_width+
    wb.close()
    return format
 ## 美化表格  todo:还需要一个异常退出  https://blog.csdn.net/qq_37289115/article/details/107322332
def beautiful_sheet(table_name,raw,col,format):
     #设置颜色
    wb2 = xw.Book(table_name)  # 建立excel表连接

    sheets_name= [st.name for st in wb2.sheets]
    for st in  sheets_name:
        sheet2 = wb2.sheets[st]
        # sheet2[0,0] =
        sheet2.range('a1').value= ['序号','书名(@知乎 东写西读整理)','总浏览次数','霸榜高校数','霸榜率','在高校榜单排名中位数','豆瓣评分','豆瓣链接(@知乎 东写西读整理)'] #更改标题行
        sheet2[0:raw,0:col+1].api.Borders(12).LineStyle = 0 #设置单元格横边框为细框线
        sheet2[0:raw, 0:col+1].api.Borders(11).LineStyle = 0 #设置单元格竖边框为细框线
        sheet2[0:raw,0:col].api.Font.Name = '微软雅黑'# 设置字体格式为微软雅黑
        sheet2[0:raw, 0:col].api.HorizontalAlignment = -4108  #设置字体居中
        sheet2[:,4].api.NumberFormat = "0%"    #“霸榜率”这一列单元格设置为百分比格式显示
        for i in range(raw): ##行遍历
                if i==0:
                    sheet2[i, 0:col].color = [217, 217, 217] #设置标题背景颜色格式
                elif i%2 ==0:
                    sheet2[i,0:col].color = [183, 222, 232]    #设置偶数行背景颜色格式为浅蓝色
        for i,item in enumerate(format): #列遍历,根据sample.xlsx中的列宽进行调整
            sheet2[0,i].column_width = item
    wb2.save()#保存excel
    wb2.close()#关闭excel
    return None


if __name__ == '__main__':
    table_name = "Top150.xlsx"#需要修改的excel名字
    raw = 151 #需要修改格式的行数
    col = 8  ##需要修改格式的列数
    format = get_sample_format(col)
    beautiful_sheet(table_name,raw,col,format)

おすすめ

転載: blog.csdn.net/pythonxuexi123/article/details/114839961