diff --git a/body_easy_exported.xlsx b/body_easy_exported.xlsx new file mode 100644 index 0000000..542c575 Binary files /dev/null and b/body_easy_exported.xlsx differ diff --git a/excel_labels.py b/excel_labels.py new file mode 100644 index 0000000..2dc5a39 --- /dev/null +++ b/excel_labels.py @@ -0,0 +1,14 @@ +import pandas as pd + + +df = pd.read_excel('body_easy.xlsx', sheet_name='List1') + + +df_deduplicated = df.drop_duplicates(subset=['Název'], keep='first') + +df_final = pd.concat([df, df_deduplicated]).sort_values(by=['x', 'y']) +df_final = df_final['Název'].reset_index(drop=True) + + +print(df_final) +df_final.to_excel('body_easy_exported.xlsx', sheet_name='List1', index=False, header=False) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 0cea55a..077a120 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,8 +7,14 @@ importlib-metadata==8.5.0 itsdangerous==2.2.0 jinja2==3.1.6 markupsafe==2.1.5 +numpy==1.24.4 openpyxl==3.1.5 +pandas==2.0.3 pyparsing==3.1.4 +python-dateutil==2.9.0.post0 +pytz==2025.2 +six==1.17.0 typing-extensions==4.13.2 +tzdata==2025.2 werkzeug==3.0.6 zipp==3.20.2 diff --git a/templates/upload_form.html b/templates/upload_form.html index a6b09e8..31ed496 100644 --- a/templates/upload_form.html +++ b/templates/upload_form.html @@ -1,5 +1,6 @@ + @@ -11,32 +12,72 @@ -

XLSX to DXF Converter

+
+

XLSX to DXF Converter

+
-
- -
- - - -
+ + +
+
+
- - - - - +
+ + + +
+ + + + + +
+
+
+ +
+ + +
+ + +
+ + + + + +
+
+ +
- - + \ No newline at end of file diff --git a/test.py b/test.py index 1afb4ab..826f1e3 100644 --- a/test.py +++ b/test.py @@ -1,9 +1,10 @@ -from flask import Flask, request, render_template, send_file +from flask import Flask, request, render_template, send_file, make_response from io import BytesIO, StringIO import ezdxf import openpyxl import os import sys +import pandas as pd app = Flask(__name__) @@ -11,28 +12,65 @@ app = Flask(__name__) def upload_file(): if request.method == 'POST': file = request.files['file'] - if file.filename.endswith('.xls') or file.filename.endswith('.csv') or file.filename.endswith('.xlsx'): - # Create a text file with the uploaded file name - - velikost = request.form['range'] - nazev_souboru = request.form['output_file'] - print(velikost) + if request.form['btn'] == 'dxf': + if file.filename.endswith('.xls') or file.filename.endswith('.csv') or file.filename.endswith('.xlsx'): + # Create a text file with the uploaded file name + + velikost = request.form['range'] + nazev_souboru = request.form['output_file'] + print(velikost) - body = nacti_data_z_excelu(file) - #print(body) + body = nacti_data_z_excelu(file) + #print(body) - dxf_file = exportuj_do_dxf(body, velikost) - dxf_file.seek(0) - return send_file( - path_or_file=dxf_file, - as_attachment=True, - download_name= nazev_souboru+".dxf" or 'hotovson.dxf', - mimetype='application/octet-stream' - ) + dxf_file = exportuj_do_dxf(body, velikost) + dxf_file.seek(0) + return send_file( + path_or_file=dxf_file, + as_attachment=True, + download_name= nazev_souboru+".dxf" or 'hotovson.dxf', + mimetype='application/octet-stream' + ) + else: + return render_template('upload_form.html', no_file=True) else: - return render_template('upload_form.html', no_file=True) + # Generate the download file + file_data = BytesIO(b"necum") + file_name = request.form['excel_output_file'] + + + df = pd.read_excel(file, sheet_name='List1') + + + df_deduplicated = df.drop_duplicates(subset=['Název'], keep='first') + + df_final = pd.concat([df, df_deduplicated]).sort_values(by=['x', 'y'], ascending=request.form.get('select')== '1') + df_final = df_final['Název'].reset_index(drop=True) + + + df_final.to_excel(file_data, sheet_name='List1', index=False, header=False) + file_data.seek(0) + + return send_file( + path_or_file=file_data, + as_attachment=True, + download_name= file_name+".xlsx" or 'hotovson.xlsx', + mimetype='application/octet-stream' + ) + return render_template('upload_form.html') +@app.route('/excel_labels', methods=['GET', 'POST']) +def excel_labels(): + + # Generate the download file + file_data = BytesIO(b"necum") + file_name = 'download_file.xlsx' + + response = make_response(send_file(file_data, mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')) + response.headers['Content-Disposition'] = f'attachment; {file_name}' + return response + def nacti_data_z_excelu(soubor, listname="List1"): wb = openpyxl.load_workbook(soubor, data_only=True) sheet = wb[listname] @@ -76,4 +114,4 @@ def exportuj_do_dxf(body, velikost) -> BytesIO: if __name__ == '__main__': - app.run(debug=False, port=5003, host='0.0.0.0') \ No newline at end of file + app.run(debug=True, port=5003, host='0.0.0.0') \ No newline at end of file