From 5090e3888fd1077d35318216473d1ffb404700ee Mon Sep 17 00:00:00 2001
From: Recolic Keghart <root@recolic.net>
Date: Sun, 16 Feb 2020 07:47:24 -0800
Subject: [PATCH] allow PROG ALPHA open xlsx and csv

---
 main.py                           |  5 ++---
 summerize-part-list/beta2alpha.py |  3 +--
 summerize-part-list/xlsx_conv.py  | 13 -------------
 utils.py                          |  1 +
 xlsx_conv.py                      | 22 ++++++++++++++++++++++
 5 files changed, 26 insertions(+), 18 deletions(-)
 delete mode 100644 summerize-part-list/xlsx_conv.py
 create mode 100644 xlsx_conv.py

diff --git a/main.py b/main.py
index 7883b89..2d94b10 100755
--- a/main.py
+++ b/main.py
@@ -14,7 +14,7 @@ if os.name == 'nt':
 from uniqer import *
 from utils import *
 import material
-import csv_preprocess
+import csv_preprocess, xlsx_conv
 import numpy as np
 from io import StringIO
     
@@ -36,8 +36,7 @@ def _main():
     junk_material_words = ['(厚)', '(宽)', '(单件重)']
     junk_part_words = []
     
-    with open(fname, mode='r') as fd:
-        fcontent = fd.read()
+    fcontent = xlsx_conv.read_as_csv(fname)
     fcontent = csv_preprocess.clean_csv(fcontent)
     fcontent = csv_preprocess.clean_csv_2(fcontent)
     
diff --git a/summerize-part-list/beta2alpha.py b/summerize-part-list/beta2alpha.py
index 93f0013..e7270ee 100644
--- a/summerize-part-list/beta2alpha.py
+++ b/summerize-part-list/beta2alpha.py
@@ -31,8 +31,7 @@ def execute_program_alpha(mypath, parent_arg1):
 
     print('EXEC =======================>', args)
     ret = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-    for line in ret.stdout:
-        print(line)
+    print(ret.stdout)
     if ret.returncode != 0:
         raise RuntimeError('SubProcess returned in status ' + str(ret.returncode))
     print('EXEC SUBPROC EXITED =======================>')
diff --git a/summerize-part-list/xlsx_conv.py b/summerize-part-list/xlsx_conv.py
deleted file mode 100644
index 3afc2f8..0000000
--- a/summerize-part-list/xlsx_conv.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import xlrd
-import csv
-import config
-
-def xlsx2csv(xlsxPath, sheetIndex, outputFd):
-    wb = xlrd.open_workbook(xlsxPath)
-    sh = wb.sheet_by_index(sheetIndex)
-    wr = csv.writer(outputFd, quoting=csv.QUOTE_NONNUMERIC)
-
-    for rownum in range(sh.nrows):
-        wr.writerow(sh.row_values(rownum))
-
-
diff --git a/utils.py b/utils.py
index 7248425..e9a9ffc 100644
--- a/utils.py
+++ b/utils.py
@@ -55,3 +55,4 @@ def try_copy(file_path, out_dir, dst = None):
         shutil.copy(file_path, os.path.join(out_dir, name))
 
 
+
diff --git a/xlsx_conv.py b/xlsx_conv.py
new file mode 100644
index 0000000..3f9b4b5
--- /dev/null
+++ b/xlsx_conv.py
@@ -0,0 +1,22 @@
+import xlrd
+import csv, io
+
+def xlsx2csv(xlsxPath, sheetIndex, outputFd):
+    wb = xlrd.open_workbook(xlsxPath)
+    sh = wb.sheet_by_index(sheetIndex)
+    wr = csv.writer(outputFd, quoting=csv.QUOTE_NONNUMERIC)
+
+    for rownum in range(sh.nrows):
+        wr.writerow(sh.row_values(rownum))
+
+def read_as_csv(fname):
+    is_xlsx = lambda fname: fname.endswith('.xlsm') or fname.endswith('.xlsx') or fname.endswith('.xls') or fname.endswith('.XLSM') or fname.endswith('.XLSX') or fname.endswith('.XLS')
+    # read xlsx or csv
+    if is_xlsx(fname):
+        buf = io.StringIO()
+        xlsx2csv(fname, 0, buf)
+        return buf.getvalue()
+    else:
+        with open(fname, mode='r') as fd:
+            return fd.read()
+
-- 
GitLab