製品より転載は少しライブラリです http://www.pinlue.com/article/2020/04/0210/1610100837708.html
問題の説明(1):優れた表示データにするために、エクセルデータのファイル形式は、多くの場合、テキストファイルよりも有利であるが、特定のpythonに、どのようにデータをエクスポートするExcelにそれ?あなたは、大量のデータをエクスポートする必要がヒットし、それがどのように動作しない場合は?本稿では、この2つの問題を解決します。
PS注:多くの人々は、Pythonのプロセスがあきらめるのは簡単に答える助けに誰も、心配するさまざまな問題が発生します学びます。パキスタンと5(デジタル同音異義語)から7 Yiyiの9戯曲下の変換を見つけることができますが、古いドライバが解決する問題を持っていない、最新のPythonチュートリアルのプロジェクトでもあります:小さなシリーズはPythonのフルスタックの無料Q&スカート建てこのため、あなたが一緒に進行を監督,,お互いに一緒に取得することができます!
(2)以下の工程:
1.最初のステップは、インストールopenpyxl、
使用すると、openpyxl缶をインストールしますが、バージョンは2.2.6である窓にインストールされていますが、CentOSのバージョン4.1が自動的にインストールされているPIP
コードは、Windowsの下で何の問題を実行しないように書かれていますが、CentOSの上で与えられていた、問題が解決され、私の237サーバー上のEW = ExcelWriter(ワークブック= WB)少なくとも一つの引数なので、決定的2.2.6バージョンがインストール言います。
ピップインストールopenpyxl == 2.2.6
2.第二段階は、ハハ、何の友人は、直接コード、PSに、ナンセンスを話していないコードがxlwtとopenpyxlの2つのバージョンが含まれて実装されていません。
(3)さらに読書:情報へのアクセスまでは、以下の点にまとめ、オンラインの意見が見つかりました:
PythonのExcelの操作に関連するモジュール11bが2つのグループを有するxlrd、xlwt、xlutilsであり、別のグループは、openpyxlあります
しかし、古い、Excelのみ97-2003またはExcel 97の以前のバージョン生成されたExcelファイルをXLS形式で扱うことができ前者のグループ(xlrd、xlwt)は、xlwtも、一般的には、このフォーマット07エクセル、Excelファイルの以降のバージョンをサポートしていません最大は256のまたはExcelファイル65536行をサポートすることができます。
大量のデータの顔がケースをExcelにエクスポートする必要があるので、あなたはので、エクセル2007+ XLSX / XLSMフォーマットのサポートのため、このような使用openpyxl- CSVファイル2)として保存するように、1)は、異なる形式で保存されている以下の3つのオプションを持っています処理3)のWin32 COM(Windowsのみ)
もちろん、我々はユーザーに優れたディスプレイ製品およびデータへの順序で、困難に直面している、我々はまだ二を選択します。
psのは、非常に幸運、いくつかは、私がopenpyxl、サポートエクセル07+を発見し、メンテナンスの誰かを持って検索した後、ドキュメント見やすく、チュートリアルやAPIドキュメントを参照すると、すぐに使い始めることができるようになり、これはそれであります -
[20180713の追加PS、次のコード__version__ openpyxl = '2.2.6' と__version__ =のopenpyxlは、 '2.4.8' の試験がために、最新バージョンのopenpyxlが__version__ = '2.5.4' です考慮して、渡しますPythonの動作例エクセルの最新バージョン
さらに騒ぎがなければ、直接コード(4)は、参照してください
#のコード:UTF-8
「」」
#私たちは、私が質問をするために彼をしたいと思い、ハを助けたいです
yaoyzによって作成
日付:2017年1月24日
「」」
importxlrd
importxlwt
#ワークブック関連
fromopenpyxl.workbookimportWorkbook
#ExcelWriter、非常に強力なパッケージの書き込みExcel関数
fromopenpyxl.writer.excelimportExcelWriter
#Eggache手紙メソッドに数字の列
fromopenpyxl.utilsimportget_column_letter
fromopenpyxl.reader.excelimportload_workbook
classHandleExcel():
「」「エクセル操作の関連するクラス」「」
def__init __(自己):
セルフ。head_row_labels = [U '学生のID ' U '学生の名前'、U' 連絡先 ' U' 知識ID ' U' 知識名「]
「」」
関数:
、txtファイル内の各レコードを読んで、リストに保存します
PARAM:
ファイル名:ファイル名が読み出されます
戻り値:
返されたレコードのリスト:res_list
「」」
defread_from_file(自己、ファイル名):
res_list = []
file_obj =オープン(ファイル名、 "R")
forlineinfile_obj.readlines():
res_list.append(ライン)
file_obj.close()
returnres_list
「」」
関数:
、* .xlsx形式の中で各レコードを読むリターンdata_dicに保存
PARAM:
excel_name:ファイル名を読み出すために、
戻り値:
辞書には、レコードを返さ:data_dic
「」」
defread_excel_with_openpyxl(自己、excel_name = "testexcel2007.xlsx"):
#読むexcel2007ファイル
WB = load_workbook(ファイル名= excel_name)
#どのように多くのテーブルを表示します
"ワークシートの範囲(複数可):" 印刷、wb.get_named_rangesを()
"ワークシート名(複数可):" 印刷、wb.get_sheet_namesを()
#最初のテーブルを取ります
sheetnames = wb.get_sheet_names()
WS = wb.get_sheet_by_name(sheetnames [0])
#テーブル名、テーブルの行、表の列の数を表示します
印刷 "ワークシートTitile:"、ws.title
)、ws.get_highest_row(: "ワークシートの行の" 印刷
)、ws.get_highest_column(: "ワークシートColsは" を印刷します
#読みなさいExcelのスプレッドシート行数、列数
ROW_NUM = ws.get_highest_row()
col_num = ws.get_highest_column()
"ROW_NUM:" を印刷し、ROW_NUM "col_num:"、col_num
#データディクショナリを保存するために設立
data_dic = {}
記号= 1
#データ辞書に保存されています
forrowinws.rows:
temp_list = []
#プリント「行」、行
forcellinrow:
printcell.value、
temp_list.append(cell.value)
「」印刷
data_dic [記号] = temp_list
記号+ = 1
printdata_dic
returndata_dic
「」」
関数:
、* .xlsx形式の中で各レコードを読むリターンdata_dicに保存
PARAM:
レコードは:、各レコードを含むリストを保存します
save_excel_name:ファイル名として保存
head_row_stu_arrive_star:
戻り値:
辞書には、レコードを返さ:data_dic
「」」
defwrite_to_excel_with_openpyxl(自己、レコード、head_row、save_excel_name = "save.xlsx"):
#新しいブックを作成します。
WB =ブック()
#excelWriterを作成します。
EW = ExcelWriter(ブック= WB)
#出力パスとファイル名を設定します。
dest_filename = save_excel_name.decode( 'UTF-8')
#最初のシートは、WSであります
WS = wb.worksheets [0]
#WSの名前を設定します。
ws.title =「範囲名」
#最初の行を記述し、ヘッダー行
forh_xinrange(1、郡(head_row)+1):
h_col = get_column_letter(H_X)
#print h_col
ws.cell( '%S%S' %(h_col、1))。値= '%s' は%(head_row [H_X-1])
#これらの行に二行目以降を書きます
私は= 2
forrecordinrecords:
record_list = STR(レコード).strip()。スプリット( "\ T")
forxinrange(1、lenは(record_list)+1):
COL = get_column_letter(X)
ws.cell( '%S%S' %(COL、I))。値= '%s' は%(record_list [X-1] .decode( 'UTF-8'))
I + = 1
#書き込みファイル
ew.save(ファイル名= dest_filename)
「」」
関数:
エクセルコンテンツテスト出力
読むExcelファイル
PARAM:
excel_name:Excelファイルの名前を読むには
戻り値:
ノー
「」」
defread_excel(自己、excel_name):
ブック= xlrd.open_workbook(excel_name)
printworkbook.sheet_names()
#すべてのシートをゲット
printworkbook.sheet_names()#[u'sheet1' 、u'sheet2' ]
sheet2_name = workbook.sheet_names()[1]
#シート取得シートの内容またはインデックス名に従って
シート2 = workbook.sheet_by_index(1)#シートインデックスは0から始まります
Sheet2の= workbook.sheet_by_name( 'シート1')
名前#シート、行数、列
printsheet2.name、sheet2.nrows、sheet2.ncols
値の#取得し、全行と列(配列)
行= sheet2.row_values(3)#GET四行目の内容
COLS = sheet2.col_values(2)#コンテンツ第3列を取得します
printrows
printcols
セルの内容を取得する#
printsheet2.cell(1,0).VALUE
printsheet2.cell_value(1,0)
printsheet2.row(1)[0] .VALUE
セルの内容のデータ型を取得#
printsheet2.cell(1,0).ctype
#名前によって得られます
returnworkbook.sheet_by_name(u'Sheet1' )
「」」
関数:
設定されたセルのスタイル
PARAM:
名前:フォントの名前
高さ:フォントの高さ
太字:大文字
戻り値:
スタイル:バックセット形式のオブジェクト
「」」
defset_style(自己、名前、高さ、大胆=偽):
スタイル= xlwt.XFStyle()#の初期のスタイル
フォント= xlwt.Font()#は、フォントスタイルを作成します。
font.name =名前# 'のTimes New Roman'
font.bold =太字
font.color_index = 4
font.height =高さ
国境= xlwt.Borders()
borders.left = 6
borders.right = 6
borders.top = 6
borders.bottom = 6
style.font =フォント
style.borders =ボーダー
returnstyle
「」」
関数:
計算結果から変更された設定に応じてセルスタイルは、Excel TXTとして記憶されます
PARAM:
データセット:結果データを保存するには、リスト記憶
戻り値:
Excelオブジェクトに結果を保存します
「」」
defwrite_to_excel(自己、データセット、save_excel_name、head_row):
F = xlwt.Workbook()#は、ワークブックを作成します。
#最初のシートを作成します。
#シート1
カウント数= 1
シート1 = f.add_sheet(u'sheet1' 、cell_overwrite_ok = TRUE)#创建シート
#タイトルの最初の行:
forpinrange(LEN(head_row)):
sheet1.write(0、P、head_row [P]、self.set_style( 'のTimes New Roman'、250、真))
デフォルト= self.set_style( 'のTimes New Roman'、200、偽)#は、ループの意志の仕事外のスタイルを定義します
forlineindataset:
ROW_LIST = STR(ライン).strip( "\ n")。スプリット( "\ T")
forppinrange(LEN(文字列(行).strip( "\ n" は)スプリット( "\ T"))。):
sheet1.write(数、PP、ROW_LIST [頁] .decode( 'UTF-8')、デフォルト)
カウント+ = 1
ファイルの保存f.save(save_excel_name)#
defrun_main_save_to_excel_with_openpyxl(自己):
「テストの読み取りとExcelファイル2007を書き込み、XLSX超えて、ファイルに書き込まれ、より多くのデータを容易にするために、」印刷
「1. txtファイルには、リストオブジェクトを格納するためのメモリに読み込まれる」印刷
dataset_list = self.read_from_file( "test_excel.txt")
「」「EXCEL 2007を処理するためのテスト用openpyxl」「」
「Excelのスプレッドシートにファイルを書き込むこと2.」を印刷します
head_row_label = self.head_row_labels
SAVE_NAME = "test_openpyxl.xlsx"
self.write_to_excel_with_openpyxl(dataset_list、head_row_label、SAVE_NAME)
「3.タスクのtxtファイル形式Excelファイル保存、終了する。」印刷
defrun_main_save_to_excel_with_xlwt(自己):
「4. txtファイルには、リストオブジェクトを格納するためのメモリに読み込まれる」印刷
dataset_list = self.read_from_file( "test_excel.txt")
「」「EXCEL 97-2003を処理するためのテスト用xlwt」「」
印刷「5.ファイルは、Excelスプレッドシートに書き込まれます。」
head_row_label = self.head_row_labels
SAVE_NAME = "test_xlwt.xls"
self.write_to_excel_with_openpyxl(dataset_list、head_row_label、SAVE_NAME)
「6.タスクのtxtファイル形式Excelファイル保存、終了する。」印刷
if__name__ == '__ MAIN__':
印刷「ハンドルExcelオブジェクトを作成します」
obj_handle_excel = HandleExcel()
#Openpyxlは、ファイルとxlwtに書き込みデータに使用されました
obj_handle_excel.run_main_save_to_excel_with_openpyxl()
obj_handle_excel.run_main_save_to_excel_with_xlwt()
「」「」「テスト読み出しファイルノートopenpyxlのXLSファイルを読み取ることがないかもしれない、とxlrd XLSX形式のファイルが読み込まれないことがあり」
#obj_handle_excel.read_excel_with_openpyxl( "testexcel2003.xls")#错误写法
#obj_handle_excel.read_excel_with_openpyxl( "testexcel2003.xls")#错误写法
obj_handle_excel.read_excel( "testexcel2003.xls")
obj_handle_excel.read_excel_with_openpyxl( "testexcel2007.xlsx")
これらは、共有の時間ですそれについて理解できますか?