Guest User

Untitled

a guest
Oct 22nd, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. #! python3
  2. # excel2csv.py - ExcelファイルをCSVファイルに変換する。
  3. # Excelファイルのシートごとに一つのCSVファイルを作成する。
  4. # CSVファイル名は、Excelファイル名_シート名.csvとする。
  5.  
  6. import sys, os, csv, openpyxl as px
  7.  
  8. # コマンドを実行したディレクトリのパスを取得
  9. current_dir_path = os.getcwd()
  10.  
  11. # コマンドライン引数でディレクトリを指定する
  12. if len(sys.argv) > 2:
  13. print('Usage: excel2csv.py search_directory_path')
  14. print(' Please specify only one argument.')
  15. print('Example: excel2csv.py relative_pathname_of_directory')
  16. sys.exit()
  17. dir_path = str(sys.argv[1])
  18.  
  19. for excel_file in os.listdir(dir_path):
  20. # xlsxファイルでなければスキップし、Workbookオブジェクトを読み込む
  21. if not excel_file.endswith('.xlsx'):
  22. continue
  23.  
  24. #excelファイル名から拡張子を分離する。
  25. excel_file_name = os.path.splitext(excel_file)[0]
  26. wb = px.load_workbook(current_dir_path + '/' + dir_path + '/' + excel_file)
  27.  
  28. for sheet_name in wb.get_sheet_names():
  29. # ワークブックのシートをループする
  30. sheet = wb.get_sheet_by_name(sheet_name)
  31. # Excelファイル名とシート名からCSVファイル名を作る
  32. csv_file_name = str(excel_file_name + '_' + sheet_name + '.csv')
  33. # このCSVファイル用にcsv.writerオブジェクトを生成する
  34. csv_file_obj = open(os.path.join(dir_path, csv_file_name), 'w', newline='')
  35. csv_writer = csv.writer(csv_file_obj)
  36.  
  37. # シートの行をループする
  38. for row_num in range(1, sheet.max_row + 1):
  39. row_data = [] # セルをこのリストに追加する
  40. # 行のセルをループする
  41. for col_num in range(1, sheet.max_column + 1):
  42. # セルをrow_dataに追加する
  43. row_data.append(sheet.cell(row=row_num, column=col_num).value)
  44. # row_dataをCSVファイルに書き出す
  45. csv_writer.writerow(row_data)
  46. csv_file_obj.close()
Add Comment
Please, Sign In to add comment