Skip to content
This repository was archived by the owner on Nov 20, 2025. It is now read-only.

Commit 4f115a3

Browse files
committed
Optimized xlsx file writing
1 parent 9ba3190 commit 4f115a3

File tree

2 files changed

+17
-21
lines changed

2 files changed

+17
-21
lines changed

libdatamerger/datamerger_ui.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
aboutString = """
2929
Datamerger v{0}
3030
31-
Copyright 2013
31+
Copyright 2013-2014
3232
{1}
3333
{2}
3434
""".format(version,author,email)

libdatamerger/sheet_io_tools.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -187,13 +187,11 @@ def write_xls(path_to_xls, header, data, ui=None, files=None):
187187
for col in xrange(len(header)):
188188
worksheet.write(0,col,header[col],style)
189189

190-
counter = 0
191190
if ui and files:
192191
rows_part = len(data)/files
193192

194193
# Write data
195-
for row in xrange(0,len(data)):
196-
counter += 1
194+
for row in xrange(0,len(data)):
197195
for col in xrange(len(header)):
198196
col_name = header[col]
199197
try:
@@ -204,8 +202,8 @@ def write_xls(path_to_xls, header, data, ui=None, files=None):
204202
worksheet.write(row+1, col, correct_datatype(value) )
205203

206204
if not ui is None:
207-
if counter % rows_part == 0:
208-
part = counter/rows_part
205+
if row % rows_part == 0:
206+
part = row/rows_part
209207
progress = int((part+files)/float(2*files+1)*100)
210208
ui.progressBar.setValue(progress)
211209

@@ -235,36 +233,34 @@ def write_xlsx(path_to_xlsx, header, data, ui=None, files=None):
235233
# Sort header alphabetically
236234
header.sort()
237235

238-
workbook = Workbook()
239-
worksheet = workbook.worksheets[0]
236+
workbook = Workbook(optimized_write = True)
237+
worksheet = workbook.create_sheet()
240238

241239
worksheet.title = "merged_data"
242-
243-
# Write header in bold
244-
for col in xrange(len(header)):
245-
cell = worksheet.cell(row=0,column=col)
246-
cell.value = header[col]
247-
cell.style.font.bold = True
248-
249-
counter = 0
240+
250241
if ui and files:
251242
rows_part = len(data)/files
252243

253-
# Write data
244+
### Write data
245+
246+
# Write column names first
247+
worksheet.append(header)
248+
254249
for row in xrange(0,len(data)):
255-
counter += 1
250+
row_data = []
256251
for col in xrange(len(header)):
257252
col_name = header[col]
258253
try:
259254
value = data[row][col_name]
260255
except KeyError:
261256
value = ""
257+
row_data.append(correct_datatype(value))
262258

263-
worksheet.cell(row=row+1,column=col).value = correct_datatype(value)
259+
worksheet.append(row_data)
264260

265261
if not ui is None:
266-
if counter % rows_part == 0:
267-
part = counter/rows_part
262+
if row % rows_part == 0:
263+
part = row/rows_part
268264
progress = int((part+files)/float(2*files+1)*100)
269265
ui.progressBar.setValue(progress)
270266

0 commit comments

Comments
 (0)