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:

  1. Skapa en instans av Workbook-klassen.
  2. Tillämpa licensen:
    1. Om du har köpt en licens, använd licensen i din applikation för att få åtkomst till hela funktionaliteten hos Aspose.Cells
    2. Om du använder utvärderingsversionen av komponenten (om du använder Aspose.Cells utan licens), hoppa över detta steg.
  3. Skapa en ny Microsoft Excel-fil eller öppna en befintlig fil där du vill lägga till/uppdatera någon text.
  4. Få åtkomst till en valfri cell i en arbetsbok i den Microsoft Excel-filen.
  5. Infoga orden Hello World! i en åtkomstcell.
  6. 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:

todo:image_alt_text

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