Dinamik Grafikler Oluşturma

Excel Tablolarını Kullanma

ListObject’ler, kullanıcı etkileşimiyle veri sıralaması ve filtrelemesi yapma özelliğine sahiptir. Hem sıralama hem de filtreleme seçenekleri, otomatik olarak eklenen başlık satırındaki açılır listeler aracılığıyla sağlanır. Bu özellikler (sıralama ve filtreleme) nedeniyle, ListObject muhtemelen bir dinamik grafiğin veri kaynağı olarak mükemmel bir adaydır çünkü sıralama veya filtreleme değiştiğinde, grafikteki verilerin temsili güncellenecek ve grafikteki [veri kaynağı] güncel duruma uyacak şekilde değişecektir.

Anlatımın anlaşılmasını basitleştirmek için, Workbook oluşturacağız ve aşağıda anlatılan adımlara göre adım adım ilerleyeceğiz.

  1. Boş bir Workbook oluşturun.
  2. İlk Worksheet ın Workbook ‘indeki Cells ‘na erişin.
  3. Hücrelere bazı veriler ekleyin.
  4. Eklenen verilere bağlı olarak ListObject oluşturun.
  5. ListObject veri aralığına göre Chart oluşturun.
  6. Sonucu diske kaydedin.
from aspose.cells import Workbook
from aspose.cells.charts import ChartType
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Create an instance of Workbook
book = Workbook()
# Access first worksheet from the collection
sheet = book.worksheets[0]
# Access cells collection of the first worksheet
cells = sheet.cells
# Insert data column wise
cells.get("A1").put_value("Category")
cells.get("A2").put_value("Fruit")
cells.get("A3").put_value("Fruit")
cells.get("A4").put_value("Fruit")
cells.get("A5").put_value("Fruit")
cells.get("A6").put_value("Vegetables")
cells.get("A7").put_value("Vegetables")
cells.get("A8").put_value("Vegetables")
cells.get("A9").put_value("Vegetables")
cells.get("A10").put_value("Beverages")
cells.get("A11").put_value("Beverages")
cells.get("A12").put_value("Beverages")
cells.get("B1").put_value("Food")
cells.get("B2").put_value("Apple")
cells.get("B3").put_value("Banana")
cells.get("B4").put_value("Apricot")
cells.get("B5").put_value("Grapes")
cells.get("B6").put_value("Carrot")
cells.get("B7").put_value("Onion")
cells.get("B8").put_value("Cabage")
cells.get("B9").put_value("Potatoe")
cells.get("B10").put_value("Coke")
cells.get("B11").put_value("Coladas")
cells.get("B12").put_value("Fizz")
cells.get("C1").put_value("Cost")
cells.get("C2").put_value(2.2)
cells.get("C3").put_value(3.1)
cells.get("C4").put_value(4.1)
cells.get("C5").put_value(5.1)
cells.get("C6").put_value(4.4)
cells.get("C7").put_value(5.4)
cells.get("C8").put_value(6.5)
cells.get("C9").put_value(5.3)
cells.get("C10").put_value(3.2)
cells.get("C11").put_value(3.6)
cells.get("C12").put_value(5.2)
cells.get("D1").put_value("Profit")
cells.get("D2").put_value(0.1)
cells.get("D3").put_value(0.4)
cells.get("D4").put_value(0.5)
cells.get("D5").put_value(0.6)
cells.get("D6").put_value(0.7)
cells.get("D7").put_value(1.3)
cells.get("D8").put_value(0.8)
cells.get("D9").put_value(1.3)
cells.get("D10").put_value(2.2)
cells.get("D11").put_value(2.4)
cells.get("D12").put_value(3.3)
# Create ListObject, Get the List objects collection in the first worksheet
listObjects = sheet.list_objects
# Add a List based on the data source range with headers on
index = listObjects.add(0, 0, 11, 3, True)
sheet.auto_fit_columns()
# Create chart based on ListObject
index = sheet.charts.add(ChartType.COLUMN, 21, 1, 35, 18)
chart = sheet.charts[index]
chart.set_chart_data_range("A1:D12", True)
chart.n_series.category_data = "A2:B12"
# Save spreadsheet
book.save(dataDir + "output_out.xlsx")

Dinamik Formüller Kullanma

Dinamik grafiklerin veri kaynağı olarak ListObject kullanmak istemiyorsanız, diğer seçenek Excel işlevlerini (veya formülleri) kullanarak verinin dinamik bir aralığını oluşturmak ve bir kontrolü (örneğin ComboBox) veri değişikliğini tetiklemek için kullanmak olacaktır. Bu senaryoda, ComboBox’un seçimine bağlı olarak uygun değerleri getirmek için VLOOKUP işlevini kullanacağız. Seçim değiştirildiğinde, VLOOKUP işlevi hücre değerini güncelleyecek. Bir hücre aralığı VLOOKUP işlevini kullanıyorsa, tüm aralık, kullanıcı etkileşimi sırasında yenilenebilir, bu nedenle dinamik bir grafik için veri kaynağı olarak kullanılabilir.

Demonstrasyonu anlaşılır tutmak için Workbook’ı sıfırdan oluşturacağız ve aşağıda belirtilen adımları adım adım ilerleteceğiz.

  1. Boş bir Workbook oluşturun.
  2. İlk Worksheet ın Workbook ‘indeki Cells ‘na erişin.
  3. Hücrelere Adlandırılmış Aralık oluşturarak bazı veriler ekleyin. Bu veriler, dinamik grafik için seri olarak hizmet edecektir.
  4. Önceki adımda oluşturulan Adlandırılmış Aralık temel alınarak ComboBox oluşturun.
  5. VLOOKUP işlevine veri kaynağı olacak hücrelere başka veriler ekleyin.
  6. Uygun parametrelerle VLOOKUP işlevini bir hücre aralığına ekleyin. Bu aralık, dinamik grafik için kaynak olarak hizmet edecektir.
  7. Önceki adımda oluşturulan aralığa dayalı olarak Chart oluşturun.
  8. Sonucu diske kaydedin.
from aspose.cells import Workbook
from aspose.cells.charts import ChartType
from aspose.pydrawing import Color
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Create a workbook object
workbook = Workbook()
# Get the first worksheet
worksheet = workbook.worksheets[0]
# Create a range in the second worksheet
range = worksheet.cells.create_range("C21", "C24")
# Name the range
range.name = "MyRange"
# Fill different cells with data in the range
range.get(0, 0).put_value("North")
range.get(1, 0).put_value("South")
range.get(2, 0).put_value("East")
range.get(3, 0).put_value("West")
comboBox = worksheet.shapes.add_combo_box(15, 0, 2, 0, 17, 64)
comboBox.input_range = "=MyRange"
comboBox.linked_cell = "=B16"
comboBox.selected_index = 0
cell = worksheet.cells.get("B16")
style = cell.get_style()
style.font.color = Color.white
cell.set_style(style)
worksheet.cells.get("C16").formula = "=INDEX(Sheet1!$C$21:$C$24,$B$16,1)"
# Put some data for chart source
# Data Headers
worksheet.cells.get("D15").put_value("Jan")
worksheet.cells.get("D20").put_value("Jan")
worksheet.cells.get("E15").put_value("Feb")
worksheet.cells.get("E20").put_value("Feb")
worksheet.cells.get("F15").put_value("Mar")
worksheet.cells.get("F20").put_value("Mar")
worksheet.cells.get("G15").put_value("Apr")
worksheet.cells.get("G20").put_value("Apr")
worksheet.cells.get("H15").put_value("May")
worksheet.cells.get("H20").put_value("May")
worksheet.cells.get("I15").put_value("Jun")
worksheet.cells.get("I20").put_value("Jun")
# Data
worksheet.cells.get("D21").put_value(304)
worksheet.cells.get("D22").put_value(402)
worksheet.cells.get("D23").put_value(321)
worksheet.cells.get("D24").put_value(123)
worksheet.cells.get("E21").put_value(300)
worksheet.cells.get("E22").put_value(500)
worksheet.cells.get("E23").put_value(219)
worksheet.cells.get("E24").put_value(422)
worksheet.cells.get("F21").put_value(222)
worksheet.cells.get("F22").put_value(331)
worksheet.cells.get("F23").put_value(112)
worksheet.cells.get("F24").put_value(350)
worksheet.cells.get("G21").put_value(100)
worksheet.cells.get("G22").put_value(200)
worksheet.cells.get("G23").put_value(300)
worksheet.cells.get("G24").put_value(400)
worksheet.cells.get("H21").put_value(200)
worksheet.cells.get("H22").put_value(300)
worksheet.cells.get("H23").put_value(400)
worksheet.cells.get("H24").put_value(500)
worksheet.cells.get("I21").put_value(400)
worksheet.cells.get("I22").put_value(200)
worksheet.cells.get("I23").put_value(200)
worksheet.cells.get("I24").put_value(100)
# Dynamically load data on selection of Dropdown value
worksheet.cells.get("D16").formula = "=IFERROR(VLOOKUP($C$16,$C$21:$I$24,2,FALSE),0)"
worksheet.cells.get("E16").formula = "=IFERROR(VLOOKUP($C$16,$C$21:$I$24,3,FALSE),0)"
worksheet.cells.get("F16").formula = "=IFERROR(VLOOKUP($C$16,$C$21:$I$24,4,FALSE),0)"
worksheet.cells.get("G16").formula = "=IFERROR(VLOOKUP($C$16,$C$21:$I$24,5,FALSE),0)"
worksheet.cells.get("H16").formula = "=IFERROR(VLOOKUP($C$16,$C$21:$I$24,6,FALSE),0)"
worksheet.cells.get("I16").formula = "=IFERROR(VLOOKUP($C$16,$C$21:$I$24,7,FALSE),0)"
# Create Chart
index = worksheet.charts.add(ChartType.COLUMN, 0, 3, 12, 9)
chart = worksheet.charts[index]
chart.n_series.add("='Sheet1'!$D$16:$I$16", False)
chart.n_series[0].name = "=C16"
chart.n_series.category_data = "=$D$15:$I$15"
# Save result on disc
workbook.save(dataDir + "output_out.xlsx")