Apache POI - 单元格
您在电子表格中输入的任何数据始终存储在单元格中。 我们使用行和列的标签来识别一个单元格。 本章介绍如何使用 Java 编程处理电子表格中单元格中的数据。
创建一个单元格
您需要在创建单元格之前创建一行。 一行不过是单元格的集合。
以下代码段用于创建单元格。
//create new workbook XSSFWorkbook workbook = new XSSFWorkbook(); //create spreadsheet with a name XSSFSheet spreadsheet = workbook.createSheet("new sheet"); //create first row on a created spreadsheet XSSFRow row = spreadsheet.createRow(0); //create first cell on created row XSSFCell cell = row.createCell(0);
单元格类型
单元格类型指定单元格是否可以包含字符串、数值或公式。 字符串单元格不能保存数值,数字单元格不能保存字符串。
以下代码用于在电子表格中创建不同类型的单元格。
import java.io.File; import java.io.FileOutputStream; import java.util.Date; 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 class TypesofCells { public static void main(String[] args)throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet spreadsheet = workbook.createSheet("cell types"); XSSFRow row = spreadsheet.createRow((short) 2); row.createCell(0).setCellValue("Type of Cell"); row.createCell(1).setCellValue("cell value"); row = spreadsheet.createRow((short) 3); row.createCell(0).setCellValue("set cell type BLANK"); row.createCell(1); row = spreadsheet.createRow((short) 4); row.createCell(0).setCellValue("set cell type BOOLEAN"); row.createCell(1).setCellValue(true); row = spreadsheet.createRow((short) 5); row.createCell(0).setCellValue("set cell type date"); row.createCell(1).setCellValue(new Date()); row = spreadsheet.createRow((short) 6); row.createCell(0).setCellValue("set cell type numeric"); row.createCell(1).setCellValue(20 ); row = spreadsheet.createRow((short) 7); row.createCell(0).setCellValue("set cell type string"); row.createCell(1).setCellValue("A String"); FileOutputStream out = new FileOutputStream(new File("typesofcells.xlsx")); workbook.write(out); out.close(); System.out.println("typesofcells.xlsx written successfully"); } }
将以上代码保存在一个名为TypesofCells.java的文件中,在命令提示符下编译并执行如下 −
$javac TypesofCells.java $java TypesofCells
如果您的系统配置了 POI 库,那么它将编译并执行以在您的当前目录中生成一个名为 typesofcells.xlsx 的 Excel 文件并显示以下输出。
typesofcells.xlsx written successfully
typesofcells.xlsx 文件如下所示 −
单元格样式
您可以在这里学习如何设置单元格格式并应用不同的样式,例如合并相邻单元格、添加边框、设置单元格对齐方式和填充颜色。
以下代码用于使用 Java 编程将不同的样式应用于单元格。
import java.io.File; import java.io.FileOutputStream; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFColor; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.Color; import org.apache.poi.ss.usermodel.FillPatternType; public class CellStyle { public static void main(String[] args)throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet spreadsheet = workbook.createSheet("cellstyle"); XSSFRow row = spreadsheet.createRow((short) 1); row.setHeight((short) 800); XSSFCell cell = (XSSFCell) row.createCell((short) 1); cell.setCellValue("test of merging"); //MEARGING CELLS //this statement for merging cells spreadsheet.addMergedRegion( new CellRangeAddress( 1, //first row (0-based) 1, //last row (0-based) 1, //first column (0-based) 4 //last column (0-based) ) ); //CELL Alignment row = spreadsheet.createRow(5); cell = (XSSFCell) row.createCell(0); row.setHeight((short) 800); // Top Left alignment XSSFCellStyle style1 = workbook.createCellStyle(); spreadsheet.setColumnWidth(0, 8000); style1.setAlignment(HorizontalAlignment.LEFT); style1.setVerticalAlignment(VerticalAlignment.TOP); cell.setCellValue("Top Left"); cell.setCellStyle(style1); row = spreadsheet.createRow(6); cell = (XSSFCell) row.createCell(1); row.setHeight((short) 800); // Center Align Cell Contents XSSFCellStyle style2 = workbook.createCellStyle(); style2.setAlignment(HorizontalAlignment.CENTER); style2.setVerticalAlignment(VerticalAlignment.CENTER); cell.setCellValue("Center Aligned"); cell.setCellStyle(style2); row = spreadsheet.createRow(7); cell = (XSSFCell) row.createCell(2); row.setHeight((short) 800); // Bottom Right alignment XSSFCellStyle style3 = workbook.createCellStyle(); style3.setAlignment(HorizontalAlignment.RIGHT); style3.setVerticalAlignment(VerticalAlignment.BOTTOM); cell.setCellValue("Bottom Right"); cell.setCellStyle(style3); row = spreadsheet.createRow(8); cell = (XSSFCell) row.createCell(3); // Justified Alignment XSSFCellStyle style4 = workbook.createCellStyle(); style4.setAlignment(HorizontalAlignment.JUSTIFY); style4.setVerticalAlignment(VerticalAlignment.JUSTIFY); cell.setCellValue("Contents are Justified in Alignment"); cell.setCellStyle(style4); //CELL BORDER row = spreadsheet.createRow((short) 10); row.setHeight((short) 800); cell = (XSSFCell) row.createCell((short) 1); cell.setCellValue("BORDER"); XSSFCellStyle style5 = workbook.createCellStyle(); style5.setBorderBottom(BorderStyle.THICK); style5.setBottomBorderColor(IndexedColors.BLUE.getIndex()); style5.setBorderLeft(BorderStyle.DOUBLE); style5.setLeftBorderColor(IndexedColors.GREEN.getIndex()); style5.setBorderRight(BorderStyle.HAIR); style5.setRightBorderColor(IndexedColors.RED.getIndex()); style5.setBorderTop(BorderStyle.DOTTED); style5.setTopBorderColor(IndexedColors.CORAL.getIndex()); cell.setCellStyle(style5); //Fill Colors //background color row = spreadsheet.createRow((short) 10 ); cell = (XSSFCell) row.createCell((short) 1); XSSFCellStyle style6 = workbook.createCellStyle(); style6.setFillBackgroundColor(IndexedColors.LIME.index); style6.setFillPattern(FillPatternType.LESS_DOTS); style6.setAlignment(HorizontalAlignment.FILL); spreadsheet.setColumnWidth(1,8000); cell.setCellValue("FILL BACKGROUNG/FILL PATTERN"); cell.setCellStyle(style6); //Foreground color row = spreadsheet.createRow((short) 12); cell = (XSSFCell) row.createCell((short) 1); XSSFCellStyle style7 = workbook.createCellStyle(); style7.setFillForegroundColor(IndexedColors.BLUE.index); style7.setFillPattern( FillPatternType.LESS_DOTS); style7.setAlignment(HorizontalAlignment.FILL); cell.setCellValue("FILL FOREGROUND/FILL PATTERN"); cell.setCellStyle(style7); FileOutputStream out = new FileOutputStream(new File("cellstyle.xlsx")); workbook.write(out); out.close(); System.out.println("cellstyle.xlsx written successfully"); } }
将上述代码保存在一个名为CellStyle.java的文件中,在命令提示符下编译并执行如下 −
$javac CellStyle.java $java CellStyle
它将在您的当前目录中生成一个名为 cellstyle.xlsx 的 Excel 文件并显示以下输出。
cellstyle.xlsx written successfully