Add xlsxwriter-based Excel generation scripts with openpyxl implementation
- Created create_excel_xlsxwriter.py and update_excel_xlsxwriter.py - Uses openpyxl exclusively to preserve Excel formatting and formulas - Updated server.js to use new xlsxwriter scripts for form submissions - Maintains all original functionality while ensuring proper Excel file handling 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1 @@
|
||||
pip
|
||||
@@ -0,0 +1,25 @@
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2013-2025, John McNamara <jmcnamara@cpan.org>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -0,0 +1,95 @@
|
||||
Metadata-Version: 2.2
|
||||
Name: xlsxwriter
|
||||
Version: 3.2.9
|
||||
Summary: A Python module for creating Excel XLSX files.
|
||||
Home-page: https://github.com/jmcnamara/XlsxWriter
|
||||
Author: John McNamara
|
||||
Author-email: jmcnamara@cpan.org
|
||||
License: BSD-2-Clause
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Requires-Python: >=3.8
|
||||
License-File: LICENSE.txt
|
||||
Dynamic: author
|
||||
Dynamic: author-email
|
||||
Dynamic: classifier
|
||||
Dynamic: description
|
||||
Dynamic: home-page
|
||||
Dynamic: license
|
||||
Dynamic: requires-python
|
||||
Dynamic: summary
|
||||
|
||||
XlsxWriter
|
||||
==========
|
||||
|
||||
**XlsxWriter** is a Python module for writing files in the Excel 2007+ XLSX
|
||||
file format.
|
||||
|
||||
XlsxWriter can be used to write text, numbers, formulas and hyperlinks to
|
||||
multiple worksheets and it supports features such as formatting and many more,
|
||||
including:
|
||||
|
||||
* 100% compatible Excel XLSX files.
|
||||
* Full formatting.
|
||||
* Merged cells.
|
||||
* Defined names.
|
||||
* Charts.
|
||||
* Autofilters.
|
||||
* Data validation and drop down lists.
|
||||
* Conditional formatting.
|
||||
* Worksheet PNG/JPEG/GIF/BMP/WMF/EMF images.
|
||||
* Rich multi-format strings.
|
||||
* Cell comments.
|
||||
* Integration with Pandas and Polars.
|
||||
* Textboxes.
|
||||
* Support for adding Macros.
|
||||
* Memory optimization mode for writing large files.
|
||||
|
||||
It supports Python 3.8+ and PyPy3 and uses standard libraries only.
|
||||
|
||||
Here is a simple example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import xlsxwriter
|
||||
|
||||
# Create an new Excel file and add a worksheet.
|
||||
workbook = xlsxwriter.Workbook("demo.xlsx")
|
||||
worksheet = workbook.add_worksheet()
|
||||
|
||||
# Widen the first column to make the text clearer.
|
||||
worksheet.set_column("A:A", 20)
|
||||
|
||||
# Add a bold format to use to highlight cells.
|
||||
bold = workbook.add_format({"bold": True})
|
||||
|
||||
# Write some simple text.
|
||||
worksheet.write("A1", "Hello")
|
||||
|
||||
# Text with formatting.
|
||||
worksheet.write("A2", "World", bold)
|
||||
|
||||
# Write some numbers, with row/column notation.
|
||||
worksheet.write(2, 0, 123)
|
||||
worksheet.write(3, 0, 123.456)
|
||||
|
||||
# Insert an image.
|
||||
worksheet.insert_image("B5", "logo.png")
|
||||
|
||||
workbook.close()
|
||||
|
||||
.. image:: https://raw.github.com/jmcnamara/XlsxWriter/master/dev/docs/source/_images/demo.png
|
||||
|
||||
See the full documentation at: https://xlsxwriter.readthedocs.io
|
||||
|
||||
Release notes: https://xlsxwriter.readthedocs.io/changes.html
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
../../../bin/__pycache__/vba_extract.cpython-312.pyc,,
|
||||
../../../bin/vba_extract.py,sha256=WmYYkk4yWQl2YO13qupkEcZqokofgVdidN5wVRr457E,2350
|
||||
xlsxwriter-3.2.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
xlsxwriter-3.2.9.dist-info/LICENSE.txt,sha256=zwi2Ck3tmGtYphfLgwQ3O9pcTv9C-04w11l7YW4Rboc,1349
|
||||
xlsxwriter-3.2.9.dist-info/METADATA,sha256=ENUE8Yjgh_B6BrkDjtBTXzesBywjLmDAdd2wrtt7fXg,2712
|
||||
xlsxwriter-3.2.9.dist-info/RECORD,,
|
||||
xlsxwriter-3.2.9.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
xlsxwriter-3.2.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
||||
xlsxwriter-3.2.9.dist-info/top_level.txt,sha256=xFEUcpcY7QzAr_-ztkXebEt1FZCxpuCbmyCsBaevhRk,11
|
||||
xlsxwriter/__init__.py,sha256=-BsFh-b8WpeXJKMc0oh1PnItTqKdC_IxC19Q_pO_E9M,218
|
||||
xlsxwriter/__pycache__/__init__.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/app.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_area.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_bar.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_column.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_doughnut.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_line.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_pie.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_radar.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_scatter.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_stock.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chart_title.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/chartsheet.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/color.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/comments.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/contenttypes.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/core.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/custom.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/drawing.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/exceptions.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/feature_property_bag.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/format.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/image.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/metadata.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/packager.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/relationships.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/rich_value.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/rich_value_rel.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/rich_value_structure.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/rich_value_types.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/shape.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/sharedstrings.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/styles.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/table.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/theme.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/url.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/utility.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/vml.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/workbook.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/worksheet.cpython-312.pyc,,
|
||||
xlsxwriter/__pycache__/xmlwriter.cpython-312.pyc,,
|
||||
xlsxwriter/app.py,sha256=Fxj246un5ReckijvorMLOy59ms5zpAxTY6PUy6VpfAE,6094
|
||||
xlsxwriter/chart.py,sha256=4fQ8cK551xlviiVc_j41dCPND8TXg_IxSObMeGpKEDQ,132029
|
||||
xlsxwriter/chart_area.py,sha256=9tABJV6OagVxiuLzhPHX2X8XQQBpO-5Q5zNdluSTiMI,2758
|
||||
xlsxwriter/chart_bar.py,sha256=qqSD3m04mS2mkjoBDjlULayIUCgzAOopbOKvDMATqF8,5007
|
||||
xlsxwriter/chart_column.py,sha256=SSvafNFCfCYhgykMlO3deaupge_NixZoegi2RCZOOPk,3671
|
||||
xlsxwriter/chart_doughnut.py,sha256=n7a8VhyIe9TJft79-F7y9myNl616y7uOSLxXzd9cvXI,2698
|
||||
xlsxwriter/chart_line.py,sha256=f4F_xapRt2_XMK-H8uGjuXtuNDuj_NMBfU3k2CdTx_0,3851
|
||||
xlsxwriter/chart_pie.py,sha256=WDt9-lVbvfuVwVSRHsLkk3tCipSme_SWVXv_eSQ1ups,7524
|
||||
xlsxwriter/chart_radar.py,sha256=qL3_vbBPdDy4Y2k5Vqt-jZgw91b3BJVOt-VhLWANhpE,2824
|
||||
xlsxwriter/chart_scatter.py,sha256=wbVqXRvo5pizXOX91Wm0WqRHY5UBM5JRNFUvEbe6EBI,9699
|
||||
xlsxwriter/chart_stock.py,sha256=R5E3VzuFSD-9UnZwDhZd054nhezyzx5mrP25Cps1fwQ,3531
|
||||
xlsxwriter/chart_title.py,sha256=NDNIxJAvWzQIm3ywE_ojhF9RlgJ1aPr8gFQ38-ii0mM,3344
|
||||
xlsxwriter/chartsheet.py,sha256=0CrbjkdNmsaYp4TsGlCWcHpl6b3KG3Ap5walCBR095o,5631
|
||||
xlsxwriter/color.py,sha256=J9LAU5hbPRTuL07iGRxgWJ4zPvCS4adCp0r01-DhDcQ,13486
|
||||
xlsxwriter/comments.py,sha256=xAi-43Jbc3OFe-r0CNrECk_3NlVlpC-yC6eMXw_eJSA,11679
|
||||
xlsxwriter/contenttypes.py,sha256=Jr3DgWNcsm_2VPyvAFal9AQEvn_iy-4IXyCBXA7LVAA,8971
|
||||
xlsxwriter/core.py,sha256=fiKqawPnwb6L5xl92e2aVkcJ2i0EtXj2TzKK3a7d_hI,5425
|
||||
xlsxwriter/custom.py,sha256=oKbSqC-ZNYawwmDXOMX_g8oN4n_JI8oMjQqZBg6x9IY,3921
|
||||
xlsxwriter/drawing.py,sha256=KZ1-IL4wZ9BN4AD47Eipo2pZ3EvxOgtw4aY8_v2qhik,34349
|
||||
xlsxwriter/exceptions.py,sha256=RHp8Q5ey36A43lpjsaeyGGNf9dZVDKAekGUamHHuack,1400
|
||||
xlsxwriter/feature_property_bag.py,sha256=oMowSC_r3oNXF9Uyv1P8Se0TwKs3YSO69L5HEzCCm7g,4274
|
||||
xlsxwriter/format.py,sha256=zyHTeNqGvnRKwLd6lQFwqX6cfwNI42dexEcG02iqu4g,32417
|
||||
xlsxwriter/image.py,sha256=wBDX8moVuqcf7bTjSWdmhKqFIck3bPQTJeLDfVZmwDI,13610
|
||||
xlsxwriter/metadata.py,sha256=2z4Qu9w_nVvg302S2k3H6HVom1nwJZTrK2BVNf7--vg,7654
|
||||
xlsxwriter/packager.py,sha256=7_s34dYK0F28k01Kw2MTJwS4u6r9lQdx3AZxxKjPv14,30287
|
||||
xlsxwriter/relationships.py,sha256=Q2ta8OaCNwD5lc6mw8OFMCbpK2gzw4PgR59Lum3o1bk,4578
|
||||
xlsxwriter/rich_value.py,sha256=8KHLb38HXhzbVU_uASlSkjBq3I-Lj7NevlTiruxLTKw,2483
|
||||
xlsxwriter/rich_value_rel.py,sha256=W1kyvd9242ngQs-B4spEZbF4scyFlmRkbHEkDAowQ-M,2226
|
||||
xlsxwriter/rich_value_structure.py,sha256=4AkH-JA6p3ovyxx2nvM2fBzb6NXtokkfvU2OghcBJqs,2544
|
||||
xlsxwriter/rich_value_types.py,sha256=KLXVsms85gDZ22DO8xKqQbFHK10E9JVFVORhzC3itYM,3347
|
||||
xlsxwriter/shape.py,sha256=8MlB_asEs5Venr5yGkExZodoXYH6GMLff8A0VT4q5VA,13639
|
||||
xlsxwriter/sharedstrings.py,sha256=erbq66s5IsyBhZ7LpfnExMgWvm9fcmnkn1HtIt7bR5k,3960
|
||||
xlsxwriter/styles.py,sha256=bZRaRUUt4JrTLoUvNY2YNj2I968Gczd0OWHojIfIi3M,24409
|
||||
xlsxwriter/table.py,sha256=1x0wOs1ek8zzjcolqMJ84vkoXOt2Q2UprvcdzKI6vpk,5918
|
||||
xlsxwriter/theme.py,sha256=0xYDmCV60qO4jzIxaPcu9bbpXj-ZDD2j0tTdG-WuL6s,8953
|
||||
xlsxwriter/url.py,sha256=ju8CNEIhDsjHyT53fHAoXz0-WzVWWeHjIGvX7UvYqLs,8535
|
||||
xlsxwriter/utility.py,sha256=J72bN4ZbUw1AmWXeow9ppJbacbuaqE7ckCKIyTIdox4,30070
|
||||
xlsxwriter/vml.py,sha256=KG82aI8lINqcrg6fV1UtPKgsGcJ5w1HedQpsKpHy8z8,22208
|
||||
xlsxwriter/workbook.py,sha256=S0o4ILSHfvMZIM4TYw1mqr9K7V6fnHp6fidpQna34vk,59539
|
||||
xlsxwriter/worksheet.py,sha256=24lVZUfIBZRZa8niZK-bmsRFNxN0jPx9CbBS36Baoa0,285350
|
||||
xlsxwriter/xmlwriter.py,sha256=ru0nbTDEbMspuK1Td01UZ_d8GEb0WQp6U98noHxmuQ4,7821
|
||||
@@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: setuptools (75.8.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
xlsxwriter
|
||||
Reference in New Issue
Block a user