Apache POI ব্যবহার করে আপনি Excel ফাইলের মধ্যে Chart (চার্ট) তৈরি করতে পারেন। চার্টের ডেটা কনফিগার করার জন্য আপনাকে দুটি প্রধান কম্পোনেন্টের সাথে কাজ করতে হবে:
- ChartData - যা চার্টের ডেটা নির্ধারণ করে।
- Chart - যা ওই ডেটার ভিত্তিতে চার্ট তৈরি করে।
এই লেখায়, আমরা দেখব কিভাবে Apache POI ব্যবহার করে Chart Data কনফিগার করা যায় এবং একটি Chart তৈরি করা যায়।
১. Chart Data তৈরি করা
ChartData তৈরি করতে হলে আপনাকে প্রথমে Excel শিটের মধ্যে ডেটা তৈরি করতে হবে, তারপর সেই ডেটা থেকে চার্টের জন্য ডেটা সিরিজ এবং সেল রেঞ্জ নির্ধারণ করতে হবে।
উদাহরণ: Chart Data কনফিগার করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.charts.XSSFChart;
import org.apache.poi.xssf.usermodel.charts.XSSFCategoryAxis;
import org.apache.poi.xssf.usermodel.charts.XSSFXYChart;
import java.io.FileOutputStream;
import java.io.IOException;
public class ChartDataExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// শীট তৈরি
Sheet sheet = workbook.createSheet("Chart Data");
// ডেটা রো তৈরি
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Month");
row1.createCell(1).setCellValue("Sales");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("January");
row2.createCell(1).setCellValue(500);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("February");
row3.createCell(1).setCellValue(700);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("March");
row4.createCell(1).setCellValue(600);
Row row5 = sheet.createRow(4);
row5.createCell(0).setCellValue("April");
row5.createCell(1).setCellValue(800);
// চার্ট তৈরি
Drawing<?> drawing = sheet.createDrawingPatriarch();
// ChartData তৈরি
XSSFRichTextString chartTitle = new XSSFRichTextString("Monthly Sales");
// চার্ট রেঞ্জ উল্লেখ
AreaReference chartDataRange = new AreaReference("A1:B5", workbook.getSpreadsheetVersion());
// চার্ট অবস্থান এবং আকার সেট করা
XSSFChart chart = (XSSFChart) drawing.createChart(new ClientAnchor());
// চার্ট টাইপ এবং সিরিজ কনফিগার করা
chart.plot(chartDataRange);
// X এবং Y অক্ষ তৈরি
XSSFCategoryAxis xAxis = (XSSFCategoryAxis) chart.getAxis(AxisPosition.BOTTOM);
xAxis.setCategoryAxisTitle("Months");
// Y অক্ষ সেট করা
chart.getAxis(AxisPosition.LEFT).setTitle("Sales");
// চার্ট সেটিংস
chart.getCTChart().getPlotArea().getBarChartArray(0).getGrouping().setVal(STBarGrouping.STANDARD);
chart.getCTChart().getPlotArea().getBarChartArray(0).getVaryColors().setVal(true);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("chartExample.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং চার্ট ডেটা কনফিগার করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- শীট এবং রো তৈরি: প্রথমে Excel শীটে ডেটা যোগ করা হয়েছে (যেমন, মাস এবং বিক্রয়)। এই ডেটা পরে চার্টের ডেটা হিসেবে ব্যবহৃত হবে।
- Drawing Object তৈরি: Drawing অবজেক্ট ব্যবহার করে আমরা চার্ট তৈরি করি।
- ChartData রেঞ্জ: AreaReference ব্যবহার করে চার্টের ডেটা রেঞ্জ নির্ধারণ করা হয় (যেমন, "A1:B5")।
- ChartObject তৈরি: XSSFChart ব্যবহার করে চার্ট তৈরি করা হয়েছে, যেখানে রেঞ্জ অনুযায়ী ডেটা প্লট করা হয়।
- Axis Configuration: X এবং Y অক্ষ কনফিগার করা হয়েছে (যেমন, মাস এবং বিক্রয়ের জন্য অক্ষের নাম দেওয়া হয়েছে)।
- Chart Formatting: চার্টের ধরনের (এখানে বারের চার্ট) কাস্টমাইজেশন এবং বিভিন্ন সেটিংস করা হয়েছে।
২. ChartData কনফিগারেশন টাইপ নির্ধারণ করা
যখন আপনি Chart তৈরি করছেন, তখন আপনাকে ChartType নির্ধারণ করতে হবে। Apache POI বিভিন্ন ধরনের চার্ট সমর্থন করে, যেমন:
- Bar Chart
- Line Chart
- Pie Chart
- XY Chart
- Area Chart
এই উদাহরণে একটি XY Chart তৈরি করা হয়েছে, তবে আপনি চাইলে অন্য যেকোনো চার্ট টাইপ ব্যবহার করতে পারেন।
উদাহরণ: Line Chart কনফিগার করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.charts.XSSFChart;
import org.apache.poi.xssf.usermodel.charts.XSSFFont;
import org.apache.poi.xssf.usermodel.charts.XSSFXYChart;
import java.io.FileOutputStream;
import java.io.IOException;
public class LineChartExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// শীট তৈরি
Sheet sheet = workbook.createSheet("Line Chart Data");
// ডেটা রো তৈরি
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Month");
row1.createCell(1).setCellValue("Sales");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("January");
row2.createCell(1).setCellValue(500);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("February");
row3.createCell(1).setCellValue(700);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("March");
row4.createCell(1).setCellValue(600);
Row row5 = sheet.createRow(4);
row5.createCell(0).setCellValue("April");
row5.createCell(1).setCellValue(800);
// চার্ট তৈরি
Drawing<?> drawing = sheet.createDrawingPatriarch();
// ChartData তৈরি
XSSFXYChart chart = (XSSFXYChart) drawing.createChart(new ClientAnchor());
// চার্ট ডেটা কনফিগার করা
chart.plot(new AreaReference("A1:B5", workbook.getSpreadsheetVersion()));
// X অক্ষ (Month) কনফিগার করা
XSSFCategoryAxis xAxis = (XSSFCategoryAxis) chart.getAxis(AxisPosition.BOTTOM);
xAxis.setCategoryAxisTitle("Months");
// Y অক্ষ (Sales) কনফিগার করা
chart.getAxis(AxisPosition.LEFT).setTitle("Sales");
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("lineChartExample.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং Line Chart কনফিগার করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- XSSFXYChart: এখানে XY Chart ব্যবহার করা হয়েছে, তবে আপনি চাইলে Line Chart বা অন্য কোনো চার্ট টাইপ ব্যবহার করতে পারেন।
- AreaReference: সেল রেঞ্জ (A1:B5) ব্যবহার করে ডেটা সিলেক্ট করা হয়েছে।
৩. Chart Style কাস্টমাইজ করা
একবার চার্ট তৈরি হলে, আপনি তার স্টাইল কাস্টমাইজ করতে পারেন। যেমন, চার্টের রঙ, লাইন স্টাইল, এবং ডাটা সিরিজের ফরম্যাট সেট করা যায়।
উদাহরণ: Chart Style কাস্টমাইজেশন
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.xssf.usermodel.charts.XSSFChart;
import java.io.FileOutputStream;
import java.io.IOException;
public class ChartStyleCustomization {
public static void main(String[] args
) throws IOException { // XSSFWorkbook অবজেক্ট তৈরি XSSFWorkbook workbook = new XSSFWorkbook();
// শীট তৈরি
Sheet sheet = workbook.createSheet("Styled Chart Data");
// ডেটা রো তৈরি
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Month");
row1.createCell(1).setCellValue("Sales");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("January");
row2.createCell(1).setCellValue(500);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("February");
row3.createCell(1).setCellValue(700);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("March");
row4.createCell(1).setCellValue(600);
Row row5 = sheet.createRow(4);
row5.createCell(0).setCellValue("April");
row5.createCell(1).setCellValue(800);
// চার্ট তৈরি
Drawing<?> drawing = sheet.createDrawingPatriarch();
// ChartData তৈরি
XSSFChart chart = (XSSFChart) drawing.createChart(new ClientAnchor());
// চার্টের ডেটা সিলেক্ট করা
chart.plot(new AreaReference("A1:B5", workbook.getSpreadsheetVersion()));
// স্টাইল কাস্টমাইজেশন
chart.getCTChart().getPlotArea().getBarChartArray(0).getGrouping().setVal(STBarGrouping.STANDARD);
chart.getCTChart().getPlotArea().getBarChartArray(0).getVaryColors().setVal(true);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("styledChartExample.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং Chart Style কাস্টমাইজ করা হয়েছে!");
}
}
#### কোড ব্যাখ্যা:
- **getVaryColors()**: চার্টে বিভিন্ন রঙের ব্যবহার কাস্টমাইজ করা হয়েছে।
- **getGrouping()**: চার্টের গ্রুপিং ধরনের কাস্টমাইজেশন করা হয়েছে।
---
### সারাংশ
**Apache POI** ব্যবহার করে আপনি **Excel** ফাইলে **Chart Data** কনফিগার করতে পারেন এবং বিভিন্ন ধরনের চার্ট (যেমন Bar, Line, Pie, XY) তৈরি করতে পারেন। চার্টের জন্য ডেটা কনফিগারেশন, চার্ট টাইপ নির্ধারণ এবং স্টাইল কাস্টমাইজেশন সহজেই করা সম্ভব। **AreaReference** ব্যবহার করে চার্টের ডেটা রেঞ্জ নির্ধারণ এবং **XSSFChart** ব্যবহার করে চার্টের প্রপার্টি এবং স্টাইল কাস্টমাইজ করা যায়।
Read more