python実装excel回転json
4021 ワード
前言
作業項目では、協力者がExcelのデータシートを提供し、それをJsonファイルに変換する必要があり、ちょうど最近pythonを勉強したので、pythonで試水して、この機能を実現することにしました.
作業環境 python 3.6 pythonのExcelに対する操作は、xlrd、xlwtの2つのモジュールに依存する必要があり、xlrdはExcelを読むモジュールであり、xlwtはExcelを書くモジュール である. pip install xlrd pip install xlwt
Excel表を手に取ってよく見ると、表の中には1列のデータがほとんどないことに気づきましたが、この列はまた重要な1つで、内容が別の列のデータに含まれているので、まずExcel表をpythonで書き直すことにしたので、xlwtパッケージも入れて、Excelファイルを読むだけならxlrdだけで十分です.
xlrd
Excelファイルを開いてデータを読み込む
bookのワークシートを取得
book内のすべてのシートの名前を取得
sheetの有効なロー数を取得
行のすべてのセル・オブジェクトからなるコレクションリストを取得
行のすべてのセルデータからなる集合リストを取得
xlwt
新規excelファイル
新規sheetテーブル
x行y列にデータvalueを書き込む
ファイルの保存
Excelテーブルへのデータの追加
新しいExcelファイルをJsonに変換
フルコードアドレス
作業項目では、協力者がExcelのデータシートを提供し、それをJsonファイルに変換する必要があり、ちょうど最近pythonを勉強したので、pythonで試水して、この機能を実現することにしました.
作業環境
Excel表を手に取ってよく見ると、表の中には1列のデータがほとんどないことに気づきましたが、この列はまた重要な1つで、内容が別の列のデータに含まれているので、まずExcel表をpythonで書き直すことにしたので、xlwtパッケージも入れて、Excelファイルを読むだけならxlrdだけで十分です.
xlrd
Excelファイルを開いてデータを読み込む
data = xlrd.open_workbook(file_path) # xlrd.book.Book
bookのワークシートを取得
table = data.sheets()[0] # , xlrd.sheet.Sheet
table = data.sheet_by_index(sheet_indx)) # , xlrd.sheet.Sheet
table = data.sheet_by_name(sheet_name) # , xlrd.sheet.Sheet
book内のすべてのシートの名前を取得
names = data.sheet_names() # book list
sheetの有効なロー数を取得
nrows = table.nrows
行のすべてのセル・オブジェクトからなるコレクションリストを取得
table.row(rowx) #
行のすべてのセルデータからなる集合リストを取得
table.row_values(rowx, start_colx=0, end_colx=None)
xlwt
新規excelファイル
file = xlwt.Workbook(encoding="utf-8") # ascii
新規sheetテーブル
table = file.add_sheet(sheet_name, cell_overwrite_ok=False) # xlwt.Worksheet.Worksheet , , cell_overwrite_ok=True
x行y列にデータvalueを書き込む
table.write(x, y, value)
ファイルの保存
file.save(file_name)
Excelテーブルへのデータの追加
def completion_excel():
file_path = input(" Excel >>>")
data = achieve_data(file_path)
if data is not None:
worksheets = data.sheet_names()
print(" :")
for index, sheet in enumerate(worksheets):
print(index, sheet)
choose = input(" >>>")
table = data.sheet_by_index(int(choose))
# Excel
workbook = xlwt.Workbook(encoding="utf-8")
# sheet
worksheet = workbook.add_sheet("sheet1")
#
titles = table.row_values(0)
for k, v in enumerate(titles):
worksheet.write(0, k, v)
for i in range(1, table.nrows):
row = table.row_values(i)
#
if row[4] == "":
course = row[6]
if " " in course:
n = course.index(" ")
row[4] = course[n-1:n+3]
else:
row[4] = " "
for x, y in enumerate(row):
worksheet.write(i, x, y)
workbook.save("Excel_test.xls")
新しいExcelファイルをJsonに変換
def excel2json():
file_path = input(" Json Excel >>>")
data = achieve_data(file_path)
if data is not None:
# sheet
worksheets = data.sheet_names()
print(" :")
for index, sheet in enumerate(worksheets):
print(index, sheet)
choose = input(" >>>")
table = data.sheet_by_index(int(choose))
#
titles = table.row_values(0)
result = {}
result["middle_school"] = []
# excel 10196 , 10196
for i in range(1, table.nrows):
row = table.row_values(i)
tmp = {}
for index, title in enumerate(titles):
if title == "id":
tmp[title] = int(row[index])
else:
tmp[title] = row[index]
result["middle_school"].append(tmp)
with open("middle_school.txt", 'w', encoding='utf-8') as f:
json.dump(result, f)
フルコードアドレス