4-python library-xlwtまたはxlsxwriter excel table operation

インターネット上のこれらのトレーニング機関が行う最も一般的なpythonの宣伝は、Pythonを使用して自動化されたExcelオフィスを完成させ、繰り返しの労力を取り除くことです。私はこの作業を行っていませんが、Excelを使用して、自動テスト中にxlwtライブラリを使用してテストデータを記録しますエクセルを書く

記録したデータを折れ線グラフに分類する必要がありましたが、xlwtで描画する操作を見つけられなかったようです。後で、xlsxwriterライブラリを使用して達成できることがわかりました。そのため、xlwtとxlsxwriterの2つのライブラリについて以下で説明します。

1.シートを追加

Excelファイルを作成し、シートフォームを追加する

1.1 xlwtメソッド
import xlwt

if __name__ == '__main__':
    excel_fd = xlwt.Workbook()
    sheet_fd = excel_fd.add_sheet("test1")  # 增加sheet

    excel_fd.save("./test.xls")  # 保存xls
1.2 xlsxwriter
import xlsxwriter

if __name__ == '__main__':
    excel_fd = xlsxwriter.Workbook("test.xlsx")
    sheet_fd = excel_fd.add_worksheet("test1")
    
    excel_fd.close()

2.長さと幅を設定します

2.1 xlwtメソッド

各列の幅を設定する

import xlwt

if __name__ == '__main__':
    excel_fd = xlwt.Workbook()
    sheet_fd = excel_fd.add_sheet("test1")  # 增加sheet

    sheet_fd.col(0).width = 200 * 40  # 设置第1列列宽
    sheet_fd.col(1).width = 200 * 15  # 设置第2列列宽
    sheet_fd.col(2).width = 200 * 15  # 设置第3列列宽

    excel_fd.save("./test.xls")  # 保存xls
    

Xlwtは一時的に行の高さを設定するためには使用されませんが、フォントとスタイルのフォントサイズ属性を使用して行の高さを変更できます

2.2 xlsxwriter

xlsxwriterライブラリは列の幅と行の高さを設定できますが、単位は異なります。

import xlsxwriter

if __name__ == '__main__':
    excel_fd = xlsxwriter.Workbook("test.xlsx")
    sheet_fd = excel_fd.add_worksheet("test1")
    sheet_fd.set_column(0, 0, 10)  # 设置第1列宽度
    sheet_fd.set_column(1, 1, 20)  # 设置第2列宽度
    sheet_fd.set_column(2, 2, 30)  # 设置第3列宽度
    sheet_fd.set_row(0, 10)  # 设置第1行高度
    sheet_fd.set_row(1, 20)  # 设置第2行高度
    sheet_fd.set_row(2, 30)  # 设置第3行高度
    
    excel_fd.close()

このset_column関数は列を設定するときに使用され、最初と2番目のパラメーターは開始列と終了列からのもので、行を設定するときset_romは1行のパラメーターが使用されます。

3.フォントの色、サイズ、境界線、背景色、中央を設定します

フォントの色、サイズ、その他のパラメータを設定することは、フォームを作成するための基本的な要素です。それ以外の場合、フォームには感情がないため、ここではいくつかの一般的に使用される要素を示します。

3.1 xlwtメソッド

xlwtのフォントスタイルインターフェイスは、上記の関数に精通しています。ここで、set_style関数は、呼び出し用にカプセル化されています。

最初のパラメーターはフォントの色、2番目のパラメーターはフォントサイズ、3番目のパラメーターはフォントが太字かどうか、4番目のパラメーターは背景色、5番目のパラメーターは中央揃えかどうかです。

もちろん、自分で拡張する必要のある属性は他にもたくさんあります。

def set_style(font_color, height, bold=False, pattern_color='', align='center'):
    style = xlwt.XFStyle()  # 初始化样式
    font = xlwt.Font()  # 为样式创建字体
    font.name = 'Times New Roman'
    font.bold = bold
    font.height = height
    font.colour_index = font_color

    borders = xlwt.Borders()  # 为样式创建边框
    borders.left = 0
    borders.right = 0
    borders.top = 0
    borders.bottom = 0

    alignment = xlwt.Alignment()  # 设置排列
    if align == 'center':
        alignment.horz = xlwt.Alignment.HORZ_CENTER
        alignment.vert = xlwt.Alignment.VERT_CENTER
    else:
        alignment.horz = xlwt.Alignment.HORZ_LEFT
        alignment.vert = xlwt.Alignment.VERT_BOTTOM

    if pattern_color != '':
        pattern = xlwt.Pattern()  # 一个实例化的样式类
        pattern.pattern = xlwt.Pattern.SOLID_PATTERN  # 固定的样式
        pattern.pattern_fore_colour = xlwt.Style.colour_map[pattern_color]  # 背景颜色
        style.pattern = pattern

    style.font = font
    style.borders = borders
    style.alignment = alignment

    return style

次の例では、書き込みを使用して入力を書き込みます。最初のパラメーターは行、2番目のパラメーターは列、3番目のパラメーターは入力コンテンツです。次のスタイルは、上記のパックされたset_styleインターフェースを呼び出すことができます。

import xlwt

RED = 0x0A
GREEN = 0x11
BLACK = 0X7FFF


if __name__ == '__main__':
    excel_fd = xlwt.Workbook()
    sheet_fd = excel_fd.add_sheet("test1")  # 增加sheet

    sheet_fd.col(0).width = 200 * 40  # 设置第1列列宽
    sheet_fd.col(1).width = 200 * 15  # 设置第2列列宽
    sheet_fd.col(2).width = 200 * 15  # 设置第3列列宽

    sheet_fd.write(0, 0, "test1",
                   style=set_style(RED, 260, bold=True, align='', pattern_color='light_orange'))
    sheet_fd.write(0, 1, "test2",
                   style=set_style(GREEN, 260, bold=False, align='', pattern_color='gray25'))
    sheet_fd.write(1, 2, "test3",
                   style=set_style(BLACK, 460, bold=True, align='center'))

    excel_fd.save("./test.xls")  # 保存xls
3.2 xlsxwriter

xlwtメソッドに似ていますが、call_formatはxlsxwriterで使用されます。

上記と同じ方法でフォント形式を設定するために、set_formatインターフェースもセットアップします。パラメーターの入力形式は少し異なりますが、次のように同じです。

import xlsxwriter

def set_format(excel_fd, font_color, height, bold=False, pattern_color='', align='center'):
    style = excel_fd.add_format({
        "fg_color": pattern_color,  # 单元格的背景颜色
        "bold": bold,  # 字体加粗
        "align": align,  # 对齐方式
        "font_color": font_color,  # 字体颜色
        "font_size": height  # 字体颜色
    })

    return style


if __name__ == '__main__':
    excel_fd = xlsxwriter.Workbook("test.xlsx")
    sheet_fd = excel_fd.add_worksheet("test1")

    sheet_fd.write(0, 0, "test1",
                   set_format(excel_fd, "red", 20, bold=True, align='', pattern_color='light_orange'))
    sheet_fd.write(0, 1, "test2",
                   set_format(excel_fd, "green", 30, bold=False, align='', pattern_color='gray25'))
    sheet_fd.write(1, 2, "test3",
                   set_format(excel_fd, "black", 40, bold=True, align='center'))

    excel_fd.close()

4.セルを結合する

テーブルヘッダーを作成すると、複数のセルが1つにマージされます

4.1 xlwtメソッド
  • パラメータ1および2:行の開始と列の開始
  • パラメーター3および4:行の終わりと列の終わり
  • パラメータ5:コンテンツ
  • パラメーター6:スタイル
sheet_fd.write_merge(3, 3, 4, 4,  "merge", set_style(0x7FFF, 320, bold=True))
4.2 xlsxwriter

xlwtと同じように、内容は次のとおりです。

  • パラメータ1および2:行の開始と列の開始
  • パラメーター3および4:行の終わりと列の終わり
  • パラメータ5:コンテンツ
  • パラメーター6:cell_formatスタイル
sheet_fd.merge_range(3, 3, 4, 4, "merge", set_format(0x7FFF, 320, bold=True))

5.折れ線グラフを描く

ここで折れ線グラフを描画する唯一の方法は、xlsxwriterです。

import xlsxwriter

if __name__ == '__main__':
    excel_fd = xlsxwriter.Workbook("test.xlsx")
    sheet_fd = excel_fd.add_worksheet("test1")
    sheet_fd.write(0, 0, "X")
    sheet_fd.write(1, 0, 1)
    sheet_fd.write(2, 0, 2)
    sheet_fd.write(3, 0, 3)
    sheet_fd.write(4, 0, 4)

    sheet_fd.write(0, 1, "Y")
    sheet_fd.write(1, 1, 4)
    sheet_fd.write(2, 1, 5)
    sheet_fd.write(3, 1, 5)
    sheet_fd.write(4, 1, 3)

    chart_fd = excel_fd.add_chart({'type': 'line'})   # 添加折线图
    chart_fd.set_title({'name': 'XY'})  # 添加图标名字
    chart_fd.set_x_axis({'name': '=' + 'test1' + '!$A$1'})  # 添加X名字(test1为sheet表)
    chart_fd.set_y_axis({'name': '=' + 'test1' + '!$B$1'})  # 添加Y名字(test1为sheet表)

    chart_fd.add_series({   # 给图表设置格式,填充内容
        'marker': {'type': 'diamond'},
        'name': ['test1', 1, 0],
        'categories': ['test1', 1, 0, 4, 0],
        'values': ['test1', 1, 1, 4, 1],  # 从第几行到第几行的内容(test1为sheet表)
    })
    sheet_fd.insert_chart(1, 2, chart_fd)

    excel_fd.close()

リファレンス
https://www.cnblogs.com/brightbrother/p/8671077.html

元の記事を106件公開 賞賛された76件 130,000回の訪問+

おすすめ

転載: blog.csdn.net/Creator_Ly/article/details/104479320