SchrodingersGat / KiBoM

Configurable BoM generation tool for KiCad EDA (http://kicad.org/)
MIT License
350 stars 95 forks source link

Plugin crashes at XLSX output when KiCad fields contain unicode #154

Closed KKlim closed 2 years ago

KKlim commented 3 years ago

Plugin crashes at XLSX output when KiCad fields contain unicode encoded content, e.g. Polish language diacritics.
When generating CVS, TVS, and HTML outputs with unicode works fine.

Log with errors when generating XLSX output when fields contain unicode:

` Run command: python "C:_KiCad\KiBoM/KiBOM_CLI.py" "-v" "-d_BOM" "C:_KiCad\KiBoM\test\kibom-test.xml" "C:/_KiCad/KiBoM/test/kibom-test.xlsx"

Command error. Return code 1 Info messages: KiBOM version 1.8.0 Output directory: 'C:_KiCad\KiBoM\test_BOM' Input: C:_KiCad\KiBoM\test\kibom-test.xml Configuration file: C:_KiCad\KiBoM\test\bom.ini PCB variant: default Saving BOM File: C:_KiCad\KiBoM\test_BOM\kibom-test_bom_A.xlsx

Error messages: Traceback (most recent call last): File "C:_KiCad\KiBoM/KiBOM_CLI.py", line 28, in main() File "C:_KiCad\KiBoM/kibom/main.py", line 247, in main result = writeVariant(input_file, output_dir, output_file, variant, pref) File "C:_KiCad\KiBoM/kibom/main.py", line 149, in writeVariant return WriteBoM(output_file, groups, net, columns.columns, preferences) File "C:_KiCad\KiBoM/kibom/bom_writer.py", line 78, in WriteBoM if WriteXLSX(filename, groups, net, headings, prefs): File "C:_KiCad\KiBoM/kibom/xlsx_writer.py", line 142, in WriteXLSX workbook.close() File "C:\Program Files\KiCad\lib\python2.7\site-packages/xlsxwriter/workbook.py", line 320, in close self._store_workbook() File "C:\Program Files\KiCad\lib\python2.7\site-packages/xlsxwriter/workbook.py", line 685, in _store_workbook xml_files = packager._create_package() File "C:\Program Files\KiCad\lib\python2.7\site-packages/xlsxwriter/packager.py", line 143, in _create_package self._write_shared_strings_file() File "C:\Program Files\KiCad\lib\python2.7\site-packages/xlsxwriter/packager.py", line 287, in _write_shared_strings_file sst._assemble_xml_file() File "C:\Program Files\KiCad\lib\python2.7\site-packages/xlsxwriter/sharedstrings.py", line 54, in _assemble_xml_file self._write_sst_strings() File "C:\Program Files\KiCad\lib\python2.7\site-packages/xlsxwriter/sharedstrings.py", line 84, in _write_sst_strings self._write_si(string) File "C:\Program Files\KiCad\lib\python2.7\site-packages/xlsxwriter/sharedstrings.py", line 122, in _write_si self._xml_si_element(string, attributes) File "C:\Program Files\KiCad\lib\python2.7\site-packages/xlsxwriter/xmlwriter.py", line 122, in _xml_si_element self.fh.write("""<t%s>%s""" % (attr, string)) File "C:\Program Files\KiCad\lib\python2.7/codecs.py", line 708, in write return self.writer.write(data) File "C:\Program Files\KiCad\lib\python2.7/codecs.py", line 369, in write data, consumed = self.encode(object, self.errors) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 17: ordinal not in range(128) `

KKlim commented 2 years ago

In KiCAD 6.0 with KiBoM version 2021.10.26 after updating XlsxWriter to version 3.0.3 the problem is gone. Everything works OK!