Python操作Excelマージセル

すべてのプログラミング言語は、操作Excelに遭遇します!この記事では主に、PythonがExcelで動作するときにセルをマージする方法について説明します。

目次

  1. エフェクト画像

  2. 使用した方法

  3. 完全なコード

1

エフェクト画像

2

使用した方法

PythonでExcelを操作するためのライブラリはたくさんありますが、今回はxlsxwriterを使用してExcelを記述します。 Pythonバージョン3.6。

xlsxwriterはpipを使用して直接インストールできます。複数のシートを含めることができる新しいExcelを作成します。プログラムでは、WindowsでExcelを操作するのと同じように、特定のワークシートを操作する必要があります。

add_ワークシートシートを追加
add_formatは、centered、leftなどのスタイルを追加します。
書き込みデータの行を書き込みます
merge_range('A1:A7')セルを結合します,A2-A7
set_columnは、columnの幅などを設定します。

3

完全なコード

import os
import xlsxwriter

def get_history():

 # write excel,construct dict
 filename ='333.xlsx'
 # 結果ファイルを削除する
 if(os.path.isfile(filename)):
  os.remove(filename)

 list ={}

 # ディクショナリをpythonディクショナリに埋め込むことができなくなったことに注意してください。
 list['name1']=[]
 list['name1'].append({'title':'title-1-1','comments':[{'content':'comments-name-1-1','created_at':'2020-04-13 12:17:10'},{'content':'comments-name-1-2','created_at':'2020-04-13 12:17:10'}]})

 list['name1'].append({'title':'title-1-2','comments':[{'content':'comments-name-1-2','created_at':'2020-04-13 12:17:10'},{'content':'comments-name-1-3','created_at':'2020-04-13 12:17:10'}]})

 list['name2']=[]
 list['name2'].append({'title':'title-2-1','comments':[{'content':'comments-name-2-1','created_at':'2020-04-13 12:17:10'},{'content':'comments-name-2-2','created_at':'2020-04-13 12:17:10'},{'content':'comments-name-2-3','created_at':'2020-04-13 12:17:10'}]})

 list['name3']=[]
 list['name3'].append({'title':'title-3-1','comments':[{'content':'comments-name-3-1','created_at':'2020-04-13 12:17:10'}]})write_to_excel(filename,list)

def write_to_excel(output,list):

 workbook = xlsxwriter.Workbook(output)

 # define sheet name
 sheetName ='History and Comment'
 worksheet_s = workbook.add_worksheet(sheetName)

 # セルのスタイルを設定する
 header = workbook.add_format({'bg_color':'#F7F7F7','color':'black','align':'center','valign':'top','border':1})

 merge_format = workbook.add_format({'bold': True,'border':6,'align':'center',  #水平方向に中央に配置
  ' valign':'vcenter',  #垂直方向の中央
  ' fg_color':'#D7E4BC',  #カラーフィル
    })

 bold_cell = workbook.add_format({'bold': True,'align':'left','valign':'top','text_wrap': True,'border':1})

 cell = workbook.add_format({'align':'left','valign':'top','text_wrap': True,'border':1})

 # 以下は他のスタイルです
 bold_header = workbook.add_format({'bold': True,'bg_color':'#F7F7F7','color':'black','align':'center','valign':'top','border':1})

 cell_center = workbook.add_format({'align':'center','valign':'top','border':1})

 title = workbook.add_format({'bold': True,'font_size':14,'align':'center','valign':'vcenter'})

 # 題名
 header_define =['Name','Titile','Commit Date','Comments']for i inrange(0,len(header_define)):
  worksheet_s.write(0, i, header_define[i], header)

 a_col_width =50
 b_col_width =50
 c_col_width =50
 d_col_width =50
 # add data into the table
 data_row =1
 data_row_2 =1
 data_row_1 =1for one_name in list.keys():

  # 最初に3列目と4列目を書く
  for one_history in list[one_name]:print(one_history)for one_comment in one_history['comments']:
    worksheet_s.write_string(data_row,2, one_comment['created_at'], bold_cell)
    worksheet_s.write_string(data_row,3, one_comment['content'], cell)
    data_row = data_row+1
   # 2列目を書く
   historys_len =len(one_history['comments'])if historys_len ==1:
    worksheet_s.write_string(data_row_2,1, one_history['title'], bold_cell)
    data_row_2 = data_row_2 +1else:print('B'+str(data_row_2)+':B'+str(data_row_2+historys_len))
    worksheet_s.merge_range('B'+str(data_row_2+1)+':B'+str(data_row_2+historys_len), one_history['title'], merge_format)
    data_row_2 = data_row_2+historys_len

  # 最初の列を書く
  if data_row_2 - data_row_1 ==1:
   worksheet_s.write_string(data_row_1,0, one_name, bold_cell)else:
   worksheet_s.merge_range('A'+str(data_row_1 +1)+':A'+str(data_row_2),one_name, merge_format)
  data_row_1 = data_row_2

 worksheet_s.set_column('A:A', a_col_width)
 worksheet_s.set_column('B:B', b_col_width)
 worksheet_s.set_column('C:C', c_col_width)
 worksheet_s.set_column('D:D', d_col_width)
 workbook.close()
 # xlsx_data = output.getvalue()
 # return xlsx_data

def test():
 excle1 = xlsxwriter.Workbook("test.xlsx")
 worksheet = excle1.add_worksheet()

 worksheet.write("A1","hello world")
 excle1.close()if __name__ =='__main__':get_history()

END

Recommended Posts

Python操作Excelマージセル
pythonexcel複数行マージ
Pythonファイル操作
python操作kafka
Python操作SQLiteデータベース
Python操作yaml命令
Pythonの自動操作とメンテナンス2
Pythonの負の弾性率の操作例
Pythonの自動操作とメンテナンス1
クイックスタートPythonファイル操作
word2vec操作のPython予備実装
Pythonリスト理解操作例の概要
Pythonファイル操作の基本的なプロセス分析
pythonselenium操作cookieの実装
PythonでExcelを読む方法
python操作redisのいくつかの例
pythonアクセスAlipayの操作例
Excelを比較し、Pythonウィンドウ関数を学ぶ
python accesshdfsの操作
Pythonは実行する操作コードを処理します