PythonオフィスオートメーションのExcelについて
5366 ワード
しかし、しばしば煩わしいことが繰り返され、手作業の効率が極めて低下している.Pythonによるオフィスオートメーション化が必要
次の一連の文章は、Pythonのオフィスオートメーションを全面的にまとめ、絶対的な乾物にします.2. の準備を
Pythonを使用してExcelファイルを操作するには、次のような方法が一般的です.
xlrd / xlwt
openpyxl
Pandas
xlsxwriter
xlwings
pywin32
xlrdとxlwtは、Excelファイルを操作する最大2つの依存ライブラリです.
ここで、
xlrdはExcelファイルの読み取りを担当し、xlwtはExcelファイルにデータを書き込むことができる
この2つの依存ライブラリをインストールします
依存ライブラリのインストール
pip3 install xlrd pip3 install xlwt
import xlrd
ファイルを開き、ワークブックオブジェクトを返します.
wb = xlrd.open_workbook(file_path)
ワークブックオブジェクトのnsheets属性取得Sheet数,sheet_names()メソッドは、すべてのSheet名のリストを返します.
#統計sheet数sheets_num, sheets_names = wb.nsheets, wb.sheet_names()print('sheet数合計:',sheets_num)print('sheet名はそれぞれ:',sheets_names)
ワークブックのいずれかのシートをフィルタするには、次の2つの方法があります.
Sheet
, 0
sheetの取得
名前またはインデックスで取得
sheet = wb.sheet_by_index(0)
sheet = wb.sheet_by_name(‘最初のSheet’)
print(sheet)
各sheetオブジェクトは、name、nrows、ncolsを使用してSheet名、行数、列数を取得できます.
さらに
row_values(index)、col_values(index)は、行または列のデータリストを取得するためにそれぞれ使用されます.
あるsheetに含まれる行の数、列の数を取得します.
sheet_name, sheet_row_count, sheet_column_count = sheet.name, sheet.nrows, sheet.ncols print('現在のsheet名:',sheet_name,',合計:',sheet_row_count,'行;有:',sheet_column_count,'列")
1行のデータを個別に取得し、インデックスは0から開始します.
例えば、2行目のデータを取得する
row_datas = sheet.row_values(1)print(‘2行目のデータは:’,row_datas)
1つのカラムのデータを個別に取得し、インデックスは0から開始します.
例えば、2列目のデータを取得する
column_datas = sheet.col_values(1)print(‘第2列データは:’,column_datas)
セルは、行インデックス、列インデックスからcell(row_index,column_index)関数を呼び出して取得できます.
行インデックスと列インデックスは、0から始まることに注意してください.すなわち、0は最初の行を表します.
xlrdでは、セルのデータ型は6種類あり、ctypeプロパティで対応する関係は次のとおりです.
0 -- (empty)
1 -- (string)
2 -- (number)
3 -- date( )
4 -- boolean( )
5 -- error( )
セルのデータの取得
例えば、2行1列目のセルのデータを取得する
one_cell = sheet.cell(1, 0)
セルの値
cell_value = one_cell.value print(「セルの値:」,cell_value)
セルのデータ型
cell_type = one_cell. print(「セルデータ型:」,cell_type)
最後に、現在のSheetのすべてのセルのデータを取得するには、すべての行、列を巡って操作します.
すべてのセルの値を取得
print(‘表中のすべてのデータは以下の通り:’)for r in range(sheet.nrows):for i in range(sheet.ncols):print(sheet.cell(r,i).value)
Excelにデータを書き込むためにはxlwtが便利です
まずxlwtのWorkbook()メソッドを使用してワークブックオブジェクトを作成します.
次に、ワークブックオブジェクトのadd_を使用します.Sheet(sheetname)メソッド新規Sheet
import xlwt sheetname=‘最初のSheet’
ワークブックオブジェクトの作成
wb = xlwt.Workbook()
Sheetを追加し、sheet名で
sheet = wb.add_sheet(sheetname)
次に、sheetオブジェクトのwrite()メソッドにより、行インデックスと列インデックスに従って、対応するセルにデータを書き込む
Sheetにデータを書き込む
3つのパラメータは、行インデックス(0から)、列インデックス(0から)、セルの値です.
最初の行の最初の列、データの書き込み
タイトルの書き込み
for index, title in enumerate(self.titles): sheet.write(0, index, title)
書き込み値
for index_row, row_values in enumerate(self.values): for index_column, column_value in enumerate(row_values): sheet.write(index_row + 1, index_column, column_value)
Excelファイルをローカルで生成するには、最後にワークブックのsave(filepath)を呼び出す必要があります.
#ファイルを保存
最後にファイルを保存すればいいです.
wb.save(filepath)
1、すべての表示されたシートを取得する
Sheetデータの読み込みには、隠れたSheetをフィルタリングする必要があることが多い
sheetオブジェクトのvisibility属性値が0の場合、このSheetがワークブックに表示されることを表します.さもないと隠される
def get_all_visiable_sheets(self,wb):"""すべての可視sheetを取得:param wb::return:"""return list(filter(lambda item:item.visibility==0,wb.sheets())http://www.qbaiwan.com
1、すべての見えるsheetを取得する
sheet_visiable = self.get_all_visiable_sheets(wb)print('すべての可視sheetは、',sheet_visiableを含む)
2.Sheet可視行または列を取得する
あるSheetでは、行や列の一部が隠されている可能性があります.
def get_all_visiable_rows(self,sheet):"あるsheetを取得すると、表示される行:param sheet::return:""result=[index for index in range(sheet.nrows)if sheet.rowinfo_map[index].hidden==0]return result
def get_all_visiable_columns(self,sheet):"あるsheetを取得すると、表示される列:param sheet::return:""result=[index for index in range(sheet.ncols)if sheet.colinfo_map[inden].hidden=[0]return result
3、セルのスタイルを取得する
セルのフォント色と背景を取得する例
def get_cell_bg_color(self,wb,sheet,row_index,col_index):"あるセルの背景色を取得する:param wb::param sheet::param row_index::param col_index::return:""xfx=sheet.cell_xf_index(row_index, col_index) xf = wb.xf_list[xfx]
#
font_color = wb.font_list[xf.font_index].colour_index
#
bg_color = xf.background.pattern_colour_index
return font_color, bg_color
xlrdを使用してセルのスタイルを読み込み、ワークブックを開くときにformatting_を明示的に定義する必要があることに注意してください.info=True、そうでないと異常が放出されます
注:formatting_を設定する必要がありますinfo=Trueで、プロパティを正常に取得できます.
wb = xlrd.open_workbook(file_path, formatting_info=True) sheet = wb.sheet_by_index(0) http://www.lelepark.com 6.最後に
xlrd、xlwtを組み合わせて使用すると、基本的にほとんどの作業を完了することができます.いくつかの複雑な機能、例えば、コピー、分割、フィルタなどの機能については、xlutilsという依存ライブラリを使用することができます.
この組合せはxlsxの互換性にあまりよくないことを指摘する必要がある.xlsxファイルを操作する必要がある場合は、xlsに移行してから行う必要があります.
私はすでに文の中のすべてのソースコードをバックグラウンドにアップロードして、公衆番号「AirPython」に注目してから「excel」に返事してすべてのソースコードを得ることができます
もしあなたが文章が悪くないと思ったら、みんなにほめて、分かち合って、伝言の下で、これは私がもっと良質な文章を出力し続ける最強の動力になるからです!