Переглянути джерело

HUE-2523 [core] Convert XLS export to pyopenxls

Support writing and reading XLSX instead of just XLS (so support more cols/rows)
Support reading XLSX is for proper testing
Has optimizations for writing files https://openpyxl.readthedocs.org/en/latest/optimized.html#optimized-writer
Support properly unicode so great for ascii or binary downloads
Active, mature project, MIT license
Romain Rigaux 10 роки тому
батько
коміт
817f25c
1 змінених файлів з 6 додано та 10 видалено
  1. 6 10
      desktop/core/src/desktop/lib/export_csvxls.py

+ 6 - 10
desktop/core/src/desktop/lib/export_csvxls.py

@@ -21,7 +21,7 @@ Common library to export either CSV or XLS.
 import gc
 import logging
 import tablib
-import xlsxwriter
+import openpyxl
 
 from django.http import StreamingHttpResponse
 from django.utils.encoding import smart_str
@@ -64,20 +64,16 @@ class XlsWrapper():
 def xls_dataset(headers, data, encoding=None):
   output = StringIO.StringIO()
 
-  workbook = xlsxwriter.Workbook(output)
-  worksheet = workbook.add_worksheet()
-
-  n = 0
+  workbook = openpyxl.Workbook()
+  worksheet = workbook.active
 
   if headers:
-    worksheet.write_row(n, 0, format(headers, encoding))
-    n +=1
+    worksheet.append(format(headers, encoding))
 
   for row in data:
-    worksheet.write_row(n, 0, format(row, encoding))
-    n +=1
+    worksheet.append(format(row, encoding))
 
-  workbook.close()
+  workbook.save(output)
 
   output.seek(0)