-
Notifications
You must be signed in to change notification settings - Fork 0
/
worksheet_to_csv.py
57 lines (48 loc) · 1.6 KB
/
worksheet_to_csv.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env python
# export data sheets from xlsx to csv
from openpyxl import load_workbook
from imp import reload
import csv
import sys
export_path = 'exports/'
if sys.version[0] == '2':
reload(sys)
sys.setdefaultencoding('utf-8')
def get_all_sheets(excel_file):
sheets = []
workbook = load_workbook(excel_file,True,True)
print(workbook.sheetnames)
all_worksheets = workbook.sheetnames
for worksheet_name in all_worksheets:
sheets.append(worksheet_name)
return sheets
def csv_from_excel(excel_file, sheets):
workbook = load_workbook(excel_file,True,True)
for worksheet_name in sheets:
print("Export " + worksheet_name + " ...")
try:
worksheet = workbook[worksheet_name]
except KeyError:
print("Could not find " + worksheet_name)
sys.exit(1)
your_csv_file = open(''.join([export_path, worksheet_name, '.csv']), 'w')
wr = csv.writer(your_csv_file, delimiter=';',quoting=csv.QUOTE_NONNUMERIC)
for row in worksheet.iter_rows():
lrow = []
for cell in row:
lrow.append(cell.value)
wr.writerow(lrow)
print(" ... done")
your_csv_file.close()
if not 2 <= len(sys.argv) <= 3:
print("Call with " + sys.argv[0] + " <xlxs file> [comma separated list of sheets to export]")
sys.exit(1)
else:
sheets = []
if len(sys.argv) == 3:
sheets = sys.argv[2].split(',')
else:
sheets = get_all_sheets(sys.argv[1])
print(sheets)
assert(sheets != None and len(sheets) > 0)
csv_from_excel(sys.argv[1], sheets)