ホームページ  >  記事  >  バックエンド開発  >  Pythonはxlrdとxlwtを使用してExcelの読み取り、書き込み、フォーマットを行います

Pythonはxlrdとxlwtを使用してExcelの読み取り、書き込み、フォーマットを行います

高洛峰
高洛峰オリジナル
2017-02-20 10:48:261926ブラウズ

最近、Excelの表をPythonで処理する際に問題が発生したので、最終的な実装方法と問題解決方法を記録しておこうと思いました。自分自身の便宜のために、または必要なときに誰もが参照できるように、次の記事では主に Python での xlrd と xlwt を使用した Excel の読み取り、書き込み、書式設定に関する関連情報を紹介します。一緒に学びましょう。

はじめに

Python は Excel を操作するために主に xlrd と xlwt という 2 つのライブラリを使用します。つまり、xlrd は Excel を読み取るためのライブラリ、xlwt は Excel を書き込むためのライブラリです。この記事では主に、Python が Excel を読み書きし、フォーマットするために xlrd と xlwt を使用する方法を紹介します。早速、詳細な実装プロセスを見てみましょう。

まずスクリプトに # -*-coding:utf-8 -*- を指定します

1. ソース Excel が存在することを確認し、xlrd を使用して最初のフォームの各行の最初の列の値を読み取ります。 。


import xlrd, xlwt 
import os 
 
assert os.path.isfile('source_excel.xls'),"There is no timesheet exist. Exit..." 
 
book = xlrd.open_workbook('source_excel.xls') 
sheet=book.sheet_by_index(0) 
 
for rows in range(sheet.nrows): 
 value = sheet.cell(rows,0).value


2. xlwt を使用して、ソーステーブルから読み取ったデータを準備し、新しいテーブルに書き込み、行幅とテーブル形式を設定します。 2行8列のセルを結合した後、タイトルを書き込み、書式を先ほど定義したtitle_styleに設定します。

write_merge を使用する。


wbk = xlwt.Workbook(encoding='utf-8') 
sheet_w = wbk.add_sheet('write_after', cell_overwrite_ok=True) 
sheet_w.col(3).width = 5000 
tittle_style = xlwt.easyxf('font: height 300, name SimSun, colour_index red, bold on; align: wrap on, vert centre, horiz center;') 
sheet_w.write_merge(0,2,0,8,u'这是标题',tittle_style)


3. 関数内でグローバル変数を使用する場合は、グローバルの追加に注意してください。それ以外の場合、 UnboundLocalError: local variable 'xxx' Referenced before assign. が表示されます。 UnboundLocalError:local variable'xxx' referenced before assignment.


check_num = 0 
 
def check_data(sheet): 
 global check_num 
 check_num=check_num+1


4. 写入日期和带格式的数值。原来从sheet中读取的日期格式为2014/4/10,处理后只保留日期并做成数组用逗号分隔后写入新的excel。


date_arr = [] 
date=sheet.cell(row,2).value.rsplit('/')[-1] 
if date not in date_arr: 
  date_arr.append(date) 
sheet_w.write_merge(row2,row2,6,6,date_num, normal_style) 
sheet_w.write_merge(row2,row2,7,7,','.join(date_arr), normal_style)


5. 当从excel中读取的日期格式为xldate时,就需要使用xlrd的xldate_as_tuple来处理为date格式。先判断表格的ctype确实是xldate才能开始操作,否则会报错。之后date格式可以使用strftime来转化为string。如:date.strftime("%Y-%m-%d-%H")


4. 日付と書式設定された値を書き込みます。シートから読み取った元の日付形式は2014/4/10となっており、処理後は日付のみを保持してカンマ区切りの配列にして新しいExcelに書き込みます。


from datetime import date,datetime 
from xlrd import xldate_as_tuple 
 
if (sheet.cell(rows,3).ctype == 3): 
  num=num+1 
  date_value = xldate_as_tuple(sheet.cell_value(rows,3),book.datemode) 
  date_tmp = date(*date_value[:3]).strftime("%d")


5. Excelから読み込んだ日付形式がxldateの場合、xlrdのxldate_as_tupleを使って日付形式に加工する必要があります。まず、操作を開始する前に、テーブルの ctype が確かに xldate であることを確認します。そうでない場合は、エラーが報告されます。その後、strftime を使用して日付形式を文字列に変換できます。例: date.strftime("%Y-%m-%d-%H")


wbk.save('new_excel.xls')

🎜🎜6 最後に、新しく書き込んだテーブルを保存します🎜🎜🎜🎜rrreee 🎜 🎜🎜🎜xlrd と xlwt を使用して Excel の読み取り、書き込み、フォーマットを行う Python に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。 🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。