در صورتی که قصد استفاده از فایل های اکسل در برنامه نویسی جاوا را داشته باشید، باید از یک کتابخانه جاوا مخصوص مانند Apache POI استفاده کنید. یکی از ویژگی های این کتابخانه توانایی استفاده از فرمت .xlsx فایل های اکسل است. در این پست نحوه خواندن، نوشتن و ویرایش اینگونه فایل ها نشان داده می شود.

در قدم اول شما باید کتابخانه Apache POI را دریافت کنید. برا این کار می توانید از این لینک استفاده کنید. سپس باید این کتابخانه را به پروژه جاوا خود اضافه کنید.

در نظر داشته باشید که باید ایمپورت های زیر را نیز انجام دهید:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

خواندن فایل اکسل

public static void readXLSXFile() throws IOException
	{
	InputStream ExcelFileToRead = new FileInputStream("test.xlsx");
	XSSFWorkbook  wb = new XSSFWorkbook(ExcelFileToRead);
		
	XSSFWorkbook test = new XSSFWorkbook(); 
		
	XSSFSheet sheet = wb.getSheetAt(0);
	XSSFRow row; 
	XSSFCell cell;

	Iterator rows = sheet.rowIterator();

	while (rows.hasNext())
	{
		row=(XSSFRow) rows.next();
		Iterator cells = row.cellIterator();
		while (cells.hasNext())
		{
			cell=(XSSFCell) cells.next();
	
			if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
			{
				System.out.print(cell.getStringCellValue()+" ");
			}
			else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
			{
				System.out.print(cell.getNumericCellValue()+" ");
			}
			else
			{
				//U Can Handel Boolean, Formula, Errors
			}
		}
		System.out.println();
	}
}

نوشتن در فایل

public static void writeXLSXFile() throws IOException {
		
	String excelFileName = "test.xlsx";//name of excel file

	String sheetName = "Sheet1";//name of sheet

	XSSFWorkbook wb = new XSSFWorkbook();
	XSSFSheet sheet = wb.createSheet(sheetName) ;

	//iterating r number of rows
	for (int r=0;r < 5; r++ )
	{
		XSSFRow row = sheet.createRow(r);

		//iterating c number of columns
		for (int c=0;c < 5; c++ )
		{
			XSSFCell cell = row.createCell(c);
	
			cell.setCellValue("Cell "+r+" "+c);
		}
	}

	FileOutputStream fileOut = new FileOutputStream(excelFileName);

	//write this workbook to an Outputstream.
	wb.write(fileOut);
	fileOut.flush();
	fileOut.close();
}

ویرایش فایل اکسل

public static void editXLSXFile() throws IOException {
		
	FileInputStream fis = new FileInputStream(new File("test.xlsx"));
	XSSFWorkbook workbook = new XSSFWorkbook (fis);
	XSSFSheet sheet = workbook.getSheetAt(0);
	
XSSFRow
row1 = sheet.getRow(1); XSSFCell cell1 = row1.getCell(1); cell1.setCellValue("مهدی");
fis
.close(); FileOutputStream fos =new FileOutputStream(new File("test.xlsx")); workbook.write(fos); fos.close(); System.out.println("Done"); }