إنشاء رسم بياني عن طريق معالجة العلامات الذكية

إنشاء جدول بيانات المصمم

جدول بيانات المصمم هو ملف Excel بسيط يتم إنشاؤه باستخدام تطبيق Microsoft Excel أو واجهات برمجة التطبيقات Aspose.Cells الذي يحتوي على التنسيق البصري والصيغ والعلامات الذكية، حيث يتم ملؤها في وقت التشغيل.

من أجل البساطة، سنقوم بإنشاء ورقة الجدول المصممة باستخدام واجهة برمجة التطبيقات Aspose.Cells for Java، ومن ثم معالجتها ضد مصدر بيانات تم إنشاؤه ديناميكيًا لأغراض العرض.

Java

 //Create an instance of Workbook

Workbook book = new Workbook();

//Access the first (default) Worksheet from the collection

Worksheet dataSheet = book.getWorksheets().get(0);

//Name the first Worksheet for referencing

dataSheet.setName("ChartData");

//Access the CellsCollection of ChartData Worksheet

Cells cells = dataSheet.getCells();

//Place the markers in the Worksheet according to desired layout

cells.get("A1").putValue("&=$Headers(horizontal)");

cells.get("A2").putValue("&=$Year2000(horizontal)");

cells.get("A3").putValue("&=$Year2005(horizontal)");

cells.get("A4").putValue("&=$Year2010(horizontal)");

cells.get("A5").putValue("&=$Year2015(horizontal)");

إذا قمت بحفظ ورقة الجدول الناتجة في هذه المرحلة، سيبدو البيانات في الورقة كما يلي.

todo:image_alt_text

معالجة ورقة الجدول المصممة

من أجل معالجة ورقة الجدول المصممة، يجب أن يكون لدينا مصدر بيانات يتوافق مع العلامات الذكية المستخدمة في ورقة الجدول المصممة. على سبيل المثال، لقد أنشأنا إدخالًا لعلامة ذكية باسم &=$Headers(horizontal)، الذي يمثل المتغير حسب الاسم Headers في حين أن المفتاح (horizontal) يشير إلى أن البيانات يجب أن تملأ أفقيًا.

من أجل استعراض هذه الحالة الاستخدام، سنقوم بإنشاء مصدر البيانات من البداية ومعالجته ضد ورقة الجدول المصممة التي تم إنشاؤها في الخطوة السابقة. ومع ذلك، في حالة الوقت الحقيقي، قد تكون البيانات متاحة بالفعل لمزيد من المعالجة، لذا يمكنك تخطي إنشاء مصدر البيانات إذا كانت البيانات متاحة بالفعل.

Java

 //Create string arrays which will serve as data sources to the smart markers

String[] headers = new String[]{"", "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12"};

String[] year2000 = new String[]{"2000", "310", "0", "110", "15", "20", "25", "30", "1222", "200", "421", "210", "133"};

String[] year2005 = new String[]{"2005", "508", "0", "170", "280", "190", "400", "105", "132", "303", "199", "120", "100"};

String[] year2010 = new String[]{"2010", "0", "210", "230", "1420", "1530", "160", "170", "110", "199", "129", "120", "230"};

String[] year2015 = new String[]{"2015", "2818", "320", "340", "260", "210", "310", "220", "0", "0", "0", "0", "122"};

إن معالجة العلامات الذكية بسيطة تماما كما يلي.

Java

 //Create an instance of WorkbookDesigner

WorkbookDesigner designer = new WorkbookDesigner();

//Set the Workbook property for the instance of WorkbookDesigner

designer.setWorkbook(book);

//Set data sources for smart markers

designer.setDataSource("Headers", headers);

designer.setDataSource("Year2000", year2000);

designer.setDataSource("Year2005", year2005);

designer.setDataSource("Year2010", year2010);

designer.setDataSource("Year2015", year2015);

//Process the designer spreadsheet against the provided data sources

designer.process();

إذا قمت بحفظ ورقة البيانات في هذه المرحلة، ستبدو البيانات كما يلي.

todo:image_alt_text

إنشاء الرسم البياني

بمجرد وجود البيانات، كل ما علينا فعله هو إنشاء رسم بياني يستند إلى مصدر البيانات. من أجل الحفاظ على السبيل المثالي، سنستخدم طريقة Chart.setChartDataRange بحيث لا يلزمنا تكوين الرسم البياني بشكل أكبر.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(GenerateChartByProcessingSmartMarkers.class);
// Create an instance of Workbook
Workbook book = new Workbook();
// Access the first (default) Worksheet from the collection
Worksheet dataSheet = book.getWorksheets().get(0);
// Name the first Worksheet for referencing
dataSheet.setName("ChartData");
// Access the CellsCollection of ChartData Worksheet
Cells cells = dataSheet.getCells();
// Place the markers in the Worksheet according to desired layout
cells.get("A1").putValue("&=$Headers(horizontal)");
cells.get("A2").putValue("&=$Year2000(horizontal)");
cells.get("A3").putValue("&=$Year2005(horizontal)");
cells.get("A4").putValue("&=$Year2010(horizontal)");
cells.get("A5").putValue("&=$Year2015(horizontal)");
// Create string arrays which will serve as data sources to the smart markers
String[] headers = new String[] { "", "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7",
"Item 8", "Item 9", "Item 10", "Item 11", "Item 12" };
String[] year2000 = new String[] { "2000", "310", "0", "110", "15", "20", "25", "30", "1222", "200", "421",
"210", "133" };
String[] year2005 = new String[] { "2005", "508", "0", "170", "280", "190", "400", "105", "132", "303", "199",
"120", "100" };
String[] year2010 = new String[] { "2010", "0", "210", "230", "1420", "1530", "160", "170", "110", "199", "129",
"120", "230" };
String[] year2015 = new String[] { "2015", "2818", "320", "340", "260", "210", "310", "220", "0", "0", "0", "0",
"122" };
// Create an instance of WorkbookDesigner
WorkbookDesigner designer = new WorkbookDesigner();
// Set the Workbook property for the instance of WorkbookDesigner
designer.setWorkbook(book);
// Set data sources for smart markers
designer.setDataSource("Headers", headers);
designer.setDataSource("Year2000", year2000);
designer.setDataSource("Year2005", year2005);
designer.setDataSource("Year2010", year2010);
designer.setDataSource("Year2015", year2015);
// Process the designer spreadsheet against the provided data sources
designer.process();
// Convert all string values of ChartData to numbers
// This is an additional step as we have imported the string values
dataSheet.getCells().convertStringToNumericValue();
// Save the number of rows & columns from the ChartData in separate variables
// These values will be used later to identify the chart's data range from ChartData
int chartRows = dataSheet.getCells().getMaxDataRow() + 1;
int chartCols = dataSheet.getCells().getMaxDataColumn() + 1;
// Add a new Worksheet of type Chart to Workbook
int chartSheetIdx = book.getWorksheets().add(SheetType.CHART);
// Access the newly added Worksheet via its index
Worksheet chartSheet = book.getWorksheets().get(chartSheetIdx);
// Name the Worksheet
chartSheet.setName("Chart");
// Add a chart of type ColumnStacked to newly added Worksheet
int chartIdx = chartSheet.getCharts().add(ChartType.COLUMN_STACKED, 0, 0, chartRows, chartCols);
// Access the newly added Chart via its index
Chart chart = chartSheet.getCharts().get(chartIdx);
// Identify the chart's data range
Range dataRange = dataSheet.getCells().createRange(0, 1, chartRows, chartCols - 1);
// Set the data range for the chart
chart.setChartDataRange(dataRange.getRefersTo(), false);
// Set the chart to size with window
chart.setSizeWithWindow(true);
// Set the format for the tick labels
chart.getValueAxis().getTickLabels().setNumberFormat("$###,### K");
// Set chart title
chart.getTitle().setText("Sales Summary");
// Set ChartSheet an active sheet
book.getWorksheets().setActiveSheetIndex(chartSheetIdx);
// Save the final result
book.save(dataDir + "report.xlsx");

يبدو الرسم البياني النهائي كما يلي.

todo:image_alt_text