Aspose.Cells for Python via Java ü Gunicorn+Flask ortamında nasıl kullanılır
Tam ortam hazırlama
Bu kılavuzun çalışma ortamı Ubuntu: 20.04’tür, gerçek durumunuza göre ayarlayabilirsiniz. Örneklerin düzgün çalışmasını sağlamak için ortamda bazı gerekli araçların kurulması gerekir. İşte işlemi tamamlamanıza yardımcı olacak kısa adım adım rehber. Lütfen bu sadece kaba bir rehberdir ve sisteminiz ve ihtiyaçlarınıza göre detaylar değişebilir.
Python
Kurulmamışsa, aşağıdaki gibi yükleyin:
sudo apt install python3 python3-pip # Ubuntu/Debian
#sudo yum install python3 python3-pip # CentOS/RHEL
Sürüm Kontrolü
python3 --version
pip3 --version
Java
Kurulmamışsa, aşağıdaki gibi yükleyin:
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
Sürüm Kontrolü
java -version
virtualenv sanal ortam
Sanal ortam, ihtiyacınıza göre kurulur. Hem geliştirme hem de üretim ortamında proje bağımlılıklarını yönetmek için sanal ortamların kullanılması önerilir. Lütfen kurulum için aşağıdaki komutu izleyin:
sudo apt install python3-venv # Ubuntu/Debian
#sudo yum install python3-venv # CentOS/RHEL
Sanal ortam oluşturun
python3 -m venv myenv # Create a virtual environment named myenv in the current directory
Sanal ortamı başlatın
source myenv/bin/activate
Uyarı: Bir sanal ortam kullanılıyorsa, aşağıdaki işlemler ilk önce ilgili sanal ortamın aktif edilmesini gerektirir
Flask
Yüklenmediyse, lütfen yüklemek için aşağıdaki komutu izleyin:
pip install Flask
Gunicorn
Yüklenmediyse, lütfen yüklemek için aşağıdaki komutu izleyin:
pip install gunicorn
Jpype
Yüklenmediyse, lütfen yüklemek için aşağıdaki komutu izleyin:
pip install jpype1
aspose-cells
Yüklenmediyse, lütfen yüklemek için aşağıdaki komutu izleyin:
pip install aspose-cells
Merhaba Dünya Uygulamasını Oluşturma
Aspose.Cells API’sını kullanarak Merhaba Dünya uygulamasını oluşturmak için:
- Workbook sınıfının bir örneğini oluşturun.
- Lisansı uygulayın:
- Bir lisans satın aldıysanız, uygulamanızda Aspose.Cells’in tam işlevselliğine erişmek için lisansı kullanın.
- Bileşenin değerlendirme sürümünü kullanıyorsanız (lisanssız Aspose.Cells kullanıyorsanız), bu adımı atlayın.
- Yeni bir Microsoft Excel dosyası oluşturun veya belirli metinleri eklemek/güncellemek istediğiniz mevcut bir dosyayı açın.
- Microsoft Excel dosyasının bir çalışma sayfasının herhangi bir hücresine erişin.
- Erişilen bir hücreye Merhaba Dünya! kelimesini ekleyin.
- Değiştirilmiş Microsoft Excel dosyasını oluşturun.
Aşağıdaki örnekler yukarıdaki adımları göstermektedir.
Bir Workbook Oluşturma
Aşağıdaki örnek, sıfırdan yeni bir çalışma kitabı oluşturur, ilk çalışma sayfasındaki A1 hücresine “Merhaba Dünya!” yazıp dosyayı kaydeder.
Varsayalım ki bir test yolu “/app”. Bu test yolu altında aşağıdaki çalışmaları tamamlayacağız.
Flask uygulama dosyaları: 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 |
Özel Gunicorn başlatma sınıfı dosyası: 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() | |
Servisi başlat
Tüm gerekli paketlerin yüklü olduğunu doğrulayın, ardından servisi başlatın.
Python3-venv sanal ortamını kullanıyorsanız, test yolunda bir sanal ortam oluşturmanız, başlatmanız ve ardından tüm gerekli araç paketlerini yüklemeniz gerekir.
python custom_gunicorn.py Or python3 custom_gunicorn.py
Sonuçları kontrol edin
1 Tarayıcıyı açın ve http://127.0.0.1:5000/ adresini ziyaret edin.
2 Girmek istediğiniz dosya adını giriş kutusuna yazın.
3 ‘Generate’ (Oluştur) düğmesine tıklayarak dosyayı kaydedin.
Bunu yaptıktan sonra, şu anda test yolu altında girdiğiniz içeriğe göre adlandırılmış bir Excel dosyası alacaksınız. Ön izleme etkisi aşağıdaki gibidir:
Docker Kullanımı
Veya yukarıdaki işlemleri bir docker konteynerine koyabilirsiniz. Örneği kullanmak için Docker’ı ortam oluşturma amacıyla çok basit bir şekilde kullanabilirsiniz. Sadece yukarıdaki işlemleri Dockerfile dosyasına yerleştirin.
İşte bir Dockerfile dosyası referans olarak. Gerekli bazı araç takımlarını listeler.
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
Bu dosya esas olarak Python projelerine bağımlılık ortamı sağlamak için kullanılır. Bu dosyadaki sürümü ihtiyaçlarınıza göre değiştirebilirsiniz.
aspose-cells==24.11.0
jpype1==1.5.1
Flask==3.0.3
gunicorn==23.0.0
Ana dosyalar
Ana dosya yapısı şu şekildedir:
app/
|-requirements.txt
|-hello.py
|-custom_gunicorn.py
Konteyneri başlat
Aşağıdaki komutu kullanarak konteyneri başlatabilirsiniz
docker run --rm -p 127.0.0.1:5000:5000 gunicorn_flask:v1.0 # gunicorn_flask:v1.0 - Image built by Dockerfile