Mengapa Membina Carta Secara Programatik?
Saluran laporan automatik selalunya memerlukan carta yang disematkan dalam buku kerja Excel, seperti ringkasan suku tahunan, papan pemuka hasil ML, atau metrik operasi. Melakukan ini tanpa Microsoft Excel bermakna tiada kos lesen dan tiada interaksi GUI.
Aspose.Cells FOSS for Python menyediakan API carta yang bersih dan Pythonik: satu kaedah bagi setiap jenis carta, rentetan biasa untuk tajuk, dan konfigurasi siri berasaskan argumen kata kunci. Keseluruhan API dibincangkan di bawah.
Pasang
pip install aspose-cells-foss
Import kelas yang anda perlukan:
from aspose.cells_foss import Workbook, Cell
Carta diakses melalui ws.charts; tiada import modul carta berasingan diperlukan.
API Carta Secara Sekilas
| Apa yang anda mahu | Cara melakukannya |
|---|---|
| Tambah carta lajur | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Tambah carta garisan | ws.charts.add_line(top_row, left_col, bottom_row, right_col) |
| Tambah carta bar | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Tambah carta pai | ws.charts.add_pie(top_row, left_col, bottom_row, right_col) |
| Tetapkan tajuk | chart.title = "My Chart" (rentetan biasa; bukan .title.text) |
| Tetapkan kategori paksi-x | chart.category_data = "A2:A6" |
| Tambah siri bernama | chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue") |
| Tunjukkan legenda | chart.show_legend = True |
| Tetapkan kedudukan legenda | chart.legend_position = "bottom" |
Semua indeks baris dan lajur adalah berdasarkan sifar. Kaedah add_* kaedah mengembalikan Chart objek secara langsung (bukan indeks).
Carta Lajur: Langkah demi Langkah
Mari bina carta lajur yang menunjukkan pendapatan dan perbelanjaan suku tahunan.
Langkah 1: Cipta buku kerja dan tulis data
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
ws.name = "Q1-Q4 Report"
##Headers
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"
##Data
quarters = ["Q1", "Q2", "Q3", "Q4"]
revenue = [50000, 62000, 71000, 89000]
expenses = [32000, 38000, 41000, 47000]
for i, (q, r, e) in enumerate(zip(quarters, revenue, expenses), start=2):
ws.cells[f"A{i}"].value = q
ws.cells[f"B{i}"].value = r
ws.cells[f"C{i}"].value = e
Langkah 2: Tambah carta
Letakkan carta di bawah data (baris 7 ke atas, meliputi lajur 0-8):
chart = ws.charts.add_bar(6, 0, 22, 8)
Langkah 3: Konfigurasikan tajuk dan legenda
chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"
Langkah 4: Tambah siri data
Setiap siri memerlukan julat nilai, julat kategori, dan nama:
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")
Langkah 5: Simpan
wb.save("quarterly_report.xlsx")
print("Chart saved to quarterly_report.xlsx")
Contoh penuh dalam satu blok:
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
ws.name = "Q1-Q4 Report"
##Data
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"
data = [("Q1", 50000, 32000), ("Q2", 62000, 38000),
("Q3", 71000, 41000), ("Q4", 89000, 47000)]
for i, (q, r, e) in enumerate(data, start=2):
ws.cells[f"A{i}"].value = q
ws.cells[f"B{i}"].value = r
ws.cells[f"C{i}"].value = e
chart = ws.charts.add_bar(6, 0, 22, 8)
chart.title = "Quarterly Revenue vs Expenses"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")
chart.show_legend = True
chart.legend_position = "bottom"
wb.save("quarterly_report.xlsx")
Carta Garis: Trend Bulanan
Corak yang sama berfungsi untuk add_line():
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
actuals = [42000, 47500, 53000, 49000, 61000, 68000]
targets = [45000, 45000, 50000, 55000, 60000, 65000]
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Actual"
ws.cells["C1"].value = "Target"
for i, (m, a, t) in enumerate(zip(months, actuals, targets), start=2):
ws.cells[f"A{i}"].value = m
ws.cells[f"B{i}"].value = a
ws.cells[f"C{i}"].value = t
chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Revenue: Actual vs Target"
chart.category_data = "A2:A7"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Actual")
chart.n_series.add("C2:C7", category_data="A2:A7", name="Target")
chart.show_legend = True
chart.legend_position = "right"
wb.save("monthly_trend.xlsx")
Carta Pai: Bahagian Pasaran
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
segments = ["Product A", "Product B", "Product C", "Product D"]
shares = [40, 25, 20, 15]
ws.cells["A1"].value = "Segment"
ws.cells["B1"].value = "Share %"
for i, (s, v) in enumerate(zip(segments, shares), start=2):
ws.cells[f"A{i}"].value = s
ws.cells[f"B{i}"].value = v
chart = ws.charts.add_pie(6, 0, 20, 7)
chart.title = "Market Share by Product"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Share")
chart.show_legend = True
chart.legend_position = "right"
wb.save("market_share.xlsx")
Kesilapan Biasa yang Perlu Dielakkan
| Salah | Betul |
|---|---|
ws.charts.add(ChartType.COLUMN, 5, 0, 15, 5) | ws.charts.add_bar(5, 0, 15, 5) |
chart.title.text = "Revenue" | chart.title = "Revenue" |
chart.n_series.add("B2:B5", True) (posisional) | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") |
from aspose.cells.charts import ChartType | Tidak diperlukan; gunakan ws.charts.add_bar() secara langsung |
chart.n_series.category_data = "A2:A5" | chart.category_data = "A2:A5" (aras carta) |
Sumber
- Aspose.Cells FOSS for Python: Installation
- Panduan Pembangun: Penciptaan Carta
- Rujukan API: ChartCollection, Chart, NSeries
- Pangkalan Pengetahuan: Cara Membuat Carta dalam Python
- Gambaran Produk: Ringkasan ciri dan keupayaan
- Blog: Memperkenalkan Aspose.Cells FOSS: Gambaran perpustakaan dan permulaan cepat
- Repositori GitHub