Hur man använder Aspose.Cells för Python via Java i Gunicorn+Flask miljö
Fullständig miljförberedelse
Exempelmiljön för denna guide är Ubuntu: 20.04, du kan justera den efter din faktiska situation. För att säkerställa att exemplen kan köras korrekt måste vi installera några nödvändiga verktyg i miljön. Följande är en kort steg-för-steg-guide för att hjälpa dig att slutföra processen. Observera att detta endast är en grov guide, och de specifika detaljerna kan variera beroende på ditt system och behov.
Python
Om det inte är installerat, installera det enligt följande:
sudo apt install python3 python3-pip # Ubuntu/Debian
#sudo yum install python3 python3-pip # CentOS/RHEL
Kontrollera version
python3 --version
pip3 --version
Java
Om det inte är installerat, installera det enligt följande:
sudo apt install openjdk-11-jdk # Ubuntu/Debian
#sudo yum install java-17-openjdk # CentOS/RHEL
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ENV PATH=$JAVA_HOME/bin:$PATH
Kontrollera version
java -version
virtualenv virtuell miljö
Den virtuella miljön installeras baserat på dina faktiska behov. Det rekommenderas att använda virtuella miljöer för att hantera projektberoenden i både utvecklings- och produktionsmiljöer. Följ följande kommando för att installera:
sudo apt install python3-venv # Ubuntu/Debian
#sudo yum install python3-venv # CentOS/RHEL
Skapa en virtuell miljö
python3 -m venv myenv # Create a virtual environment named myenv in the current directory
Starta den virtuella miljön
source myenv/bin/activate
Observera: Om en virtuell miljö används krävs det att du aktiverar den motsvarande virtuella miljön först
Flask
Om inte installerad, vänligen följ följande kommando för att installera:
pip install Flask
Gunicorn
Om inte installerad, vänligen följ följande kommando för att installera:
pip install gunicorn
Jpype
Om inte installerad, vänligen följ följande kommando för att installera:
pip install jpype1
aspose-cells
Om inte installerad, vänligen följ följande kommando för att installera:
pip install aspose-cells
Skapa Hello World-applikationen
För att skapa Hello World-applikationen med Aspose.Cells API:
- Skapa en instans av Workbook-klassen.
- Tillämpa licensen:
- Om du har köpt en licens, använd licensen i din applikation för att få åtkomst till hela funktionaliteten hos Aspose.Cells
- Om du använder utvärderingsversionen av komponenten (om du använder Aspose.Cells utan licens), hoppa över detta steg.
- Skapa en ny Microsoft Excel-fil eller öppna en befintlig fil där du vill lägga till/uppdatera någon text.
- Få åtkomst till en valfri cell i en arbetsbok i den Microsoft Excel-filen.
- Infoga orden Hello World! i en åtkomstcell.
- Generera den modifierade Microsoft Excel-filen.
Exemplen nedan visar ovanstående steg.
Skapa en arbetsbok
I följande exempel skapas en ny arbetsbok från grunden, skriver orden “Hello World!” i cellen A1 på den första arbetsbladet och sparar filen.
Anta att vi har en testväg “/app”. Vi kommer att slutföra följande arbete under denna testväg.
Flask-applikationsfiler: hello.py
from flask import Flask, request, jsonify | |
import threading | |
# Creating a Flask Application | |
def create_app(): | |
print("Start create_app") | |
app = Flask(__name__) | |
@app.route("/") | |
def home(): | |
# Returns HTML page content | |
return """ | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Aspose.Cells Python via Java in Flask</title> | |
</head> | |
<body> | |
<h1>Welcome to Aspose.Cells Python via Java</h1> | |
<p>This is an example of how to use Aspose.Cells Python via Java in Flask.</p> | |
<p>This example creates a new workbook object and enters "Hello World" in the specified cell, and finally saves it with the file name you specify.</p> | |
<pre><code> | |
import jpype | |
import asposecells | |
if not jpype.isJVMStarted(): | |
jpype.startJVM() | |
from asposecells.api import Workbook, CellsHelper | |
workbook = Workbook() | |
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello World") | |
workbook.save("NameYouSpecified" + ".xlsx") | |
</code></pre> | |
<label>Enter Your File Name:</label> | |
<input type="text" id="name" name="name" required> | |
<button id="btn_save">Generate</button> | |
<p id="message"></p> | |
<script> | |
//Bind a click event to button Save | |
document.getElementById("btn_save").addEventListener("click", function() { | |
var name = document.getElementById('name').value; | |
fetch("/button_save?name=" + encodeURIComponent(name)) | |
.then(response => response.json()) | |
.then(data => { | |
document.getElementById("message").innerText = "The generated file is saved as " + data.FileName + ".xlsx"; | |
}); | |
}); | |
</script> | |
</body> | |
</html> | |
""" | |
@app.route("/button_save", methods=["GET"]) | |
def increment_button1(): | |
"""Handle the click event of button Save""" | |
import jpype | |
import asposecells | |
if not jpype.isJVMStarted(): | |
jpype.startJVM() | |
from asposecells.api import Workbook, CellsHelper | |
#print("Version: " + CellsHelper.getVersion()) | |
workbook = Workbook() | |
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello World") | |
name = request.args.get('name') | |
workbook.save(str(name) + ".xlsx") | |
return jsonify({"message": "Button Save clicked", "FileName": str(name)}) | |
return app |
Custom Gunicorn-startklassfil: custom_gunicorn.py
from gunicorn.app.base import BaseApplication | |
from hello import create_app | |
class CustomGunicornApplication(BaseApplication): | |
""" | |
Customizing the Gunicorn Startup Class | |
""" | |
def __init__(self, app, options=None): | |
self.app = app | |
self.options = options or {} | |
super().__init__() | |
def load_config(self): | |
"""Loading Gunicorn’s configuration""" | |
for key, value in self.options.items(): | |
self.cfg.set(key.lower(), value) | |
def load(self): | |
"""Loading the Flask application""" | |
return self.app | |
def on_starting(self, server): | |
"""Fired when the Gunicorn main process starts""" | |
print("Gunicorn is starting... Running some initialization tasks...") | |
self.initialize_system() | |
def initialize_system(self): | |
"""Perform certain tasks at startup, such as logging or loading resources""" | |
print("System initialized!") | |
if __name__ == "__main__": | |
# Creating a Flask Application | |
app = create_app() | |
# Gunicorn Configuration | |
gunicorn_options = { | |
"bind": "0.0.0.0:5000", # Bind address and port | |
"workers": 2, # Number of worker processes | |
"loglevel": "info", # Log level | |
} | |
# Starting a custom Gunicorn application | |
CustomGunicornApplication(app, gunicorn_options).run() | |
Starta tjänsten
Verifera att alla paket som krävs för tjänsten är installerade, starta sedan tjänsten.
Om du använder python3-venv virtuell miljö, måste du skapa en virtuell miljö i testvägen, starta den och sedan installera alla verktygs paket som krävs.
python custom_gunicorn.py Or python3 custom_gunicorn.py
Kontrollera resultat
1 Öppna webbläsaren och besök http://127.0.0.1:5000/.
2 Ange filnamnet du vill spara i inmatningsrutan.
3 Klicka på ‘Generate’-knappen för att spara filen.
När du har gjort detta får du en Excel-fil som heter efter innehållet du angav i den aktuella testvägen. Förhandsgranskningseffekten är som följer:
Använda Docker
Eller kan du lägga in ovanstående operationer i en docker-container. Det är mycket enkelt att använda Docker för att bygga den miljö som används av exemplet. Placera bara ovanstående operationer i Dockerfile-filen.
Här är en Dockerfile för referens. Den listar några nödvändiga verktyg som krävs för att bygga miljön.
Dockerfile
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
python3-dev \
python3-venv \
build-essential \
libssl-dev \
libffi-dev \
libpq-dev \
openjdk-11-jdk \
wget \
curl \
unzip \
&& rm -rf /var/lib/apt/lists/*
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ENV PATH=$JAVA_HOME/bin:$PATH
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python3", "custom_gunicorn.py"]
requirements.txt
Denna fil används huvudsakligen för att tillhandahålla en beroendemiljö för Python-projekt. Du kan ändra versionen i denna fil för att passa dina behov.
aspose-cells==24.11.0
jpype1==1.5.1
Flask==3.0.3
gunicorn==23.0.0
Huvudfiler
Huvudfilstrukturen är som följer:
app/
|-requirements.txt
|-hello.py
|-custom_gunicorn.py
Starta containern
Du kan starta containern med följande kommando
docker run --rm -p 127.0.0.1:5000:5000 gunicorn_flask:v1.0 # gunicorn_flask:v1.0 - Image built by Dockerfile