如何使用Java对电子表格中的单元格应用不同的样式?
Apache POI 是一个强大的 API,它使用户能够使用Java程序创建、操作和显示基于 Microsoft Office 的各种文件格式。使用 POI,您应该能够对以下文件格式执行创建、修改和显示/读取操作。例如, Java不提供处理 Excel 文件的内置支持,因此我们需要为这项工作寻找开源 API。它是由 Apache Software Foundation 开发和分发的开源库,用于使用Java程序设计或修改 Microsoft Office 文件。它包含将用户输入数据或文件解码为 MS Office 文档的类和方法。在这里,可以在Java程序中使用此概念将不同的样式(如字体、颜色、单元格合并、对齐方式等)应用于 Excel 中的单元格。
Apache POI 架构:它由构成架构以形成工作系统的各种组件组成:
- POIFS(Poor Obfuscation Implementation File System):该组件是所有其他 POI 元素的基本因素。它用于显式读取不同的文件。
- HSSF(Horrible Spreadsheet Format):用于读写xls格式的MS-Excel文件。
- XSSF (XML Spreadsheet Format):用于 MS-Excel 的 xlsx 文件格式。
- HPSF (Horrible Property Set Format):用于提取 MS-Office 文件的属性集。
- HWPF (Horrible Word Processor Format):用于读写 MS-Word 的 doc 扩展文件。
- XWPF(XML Word Processor Format):用于读写 MS-Word 的 Docx 扩展文件。
- HSLF(可怕的幻灯片布局格式):用于阅读、创建和编辑 PowerPoint 演示文稿。
- HDGF(可怕的图表格式):它包含 MS-Visio 二进制文件的类和方法。
- HPBF (Horrible Publisher Format):用于读写 MS-Publisher 文件。
Jar 文件是包含一个或多个Java类文件的 Zip 存档。这使得库的使用更加方便。目录和 Jar 文件被添加到构建路径中,并且在运行时可供 ClassLoader 使用以查找其中的特定类。我们通常使用 .jar 文件以Java类文件和相关元数据和资源(文本、图像等)的形式分发Java应用程序或库。
One can say JAR = JavaARchive
方法:
- 第 1 步:导入必要的 .jar 文件,如 HSSF、XML,并将它们添加到您的构建路径中。
- 第 2 步:使用“new XSSFWorkbook()”创建工作簿,我们必须在其中使用“workbook.createSheet('Sheet1')”创建电子表格或 Excel 文件,我们将在其中应用不同的样式。
- 第 3 步:应用样式,这里使用命令电子表格.addMergedRegion 合并单元格。我们必须提供行和列的范围地址及其参数。
- 第 4 步:现在确定单元格对齐方式的下一个样式。为此,我们有两个命令
- “style1.setAlignment(XSSFCellStyle.ALIGN_LEFT)”用于确定对齐和
- “style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP)”用于确定垂直对齐方式
- 第 5 步:对于单元格应用边框,我们可以使用“setBorderBottom/Left/Top/Right(XSSFCleeName.BorderName)”。
- 第六步:更改参数中的边框名称,可以通过不同的边框样式。
- 第七步:对于填充颜色和添加图案,首先使用“setFillBackgroundColor(HSSFColor.COLOR_NAME.index)”设置单元格的背景颜色。
- 步骤8:然后通过“setFillPattern(XSSFCellStyle.PATTERN_NAME)”设置您喜欢的模式。
- 第九步:最后,使用”setAlignment(XSSFCellStyle.ALIGN_TYPE);设置对齐方式;
实现:对已创建的本地目录下的空Excel文件执行上述程序步骤。
- 通过创建 XSSFSheet 对象来创建电子表格
- 使用createRow()方法在上述 XSSFSheet 中创建一行。
- 稍后,设置行高
- 创建一个类型为 XSSFCell 的对象并在创建的行上方对它进行类型转换。
- 设置单元格值。
- 合并单元格。
- 对齐单元格。
- 对齐对齐。
- 与单元格接壤。
- 在单元格中填充颜色。
- 通过创建 FileOutputStream 对象在本地目录中创建一个新文件。
- 写入在初始步骤中创建的上述工作簿。
- 关闭文件的连接。
例子:
Java
// Java Program to apply different styles
// to a cell in a spreadsheet
// Importing java input/output classes
import java.io.File;
import java.io.FileOutputStream;
// Importing Apache POI modules
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
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.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
// Class- for styling cells
public class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Create a Work Book
XSSFWorkbook workbook = new XSSFWorkbook();
// Step 1: Create a Spread Sheet by
// creating an object of XSSFSheet
XSSFSheet spreadsheet
= workbook.createSheet("Sheet1");
// Step 2(a): Creating a row in above XSSFSheet
// using createRow() method
XSSFRow row = spreadsheet.createRow((short)1);
// Step 2(b): Setting height of a row
row.setHeight((short)800);
// Step 3: Creating an object of type XSSFCell and
// typecasting above row created to it
XSSFCell cell = (XSSFCell)row.createCell((short)1);
// Step 4: Setting cell values
cell.setCellValue("Merged cells");
// Step 5: MERGING 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)
));
// Step 6: CELL Alignment
row = spreadsheet.createRow(5);
cell = (XSSFCell)row.createCell(0);
row.setHeight((short)800);
// 6(a) Top Left alignment
XSSFCellStyle style1 = workbook.createCellStyle();
spreadsheet.setColumnWidth(0, 8000);
style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
style1.setVerticalAlignment(
XSSFCellStyle.VERTICAL_TOP);
cell.setCellValue("Hi, I'm top left indent");
cell.setCellStyle(style1);
row = spreadsheet.createRow(6);
cell = (XSSFCell)row.createCell(1);
row.setHeight((short)800);
// 6(b) Center Align Cell Contents
XSSFCellStyle style2 = workbook.createCellStyle();
style2.setAlignment(XSSFCellStyle.ALIGN_CENTER);
style2.setVerticalAlignment(
XSSFCellStyle.VERTICAL_CENTER);
cell.setCellValue("I'm Center Aligned indent");
cell.setCellStyle(style2);
row = spreadsheet.createRow(7);
cell = (XSSFCell)row.createCell(2);
row.setHeight((short)800);
// 6(c) Bottom Right alignment
XSSFCellStyle style3 = workbook.createCellStyle();
style3.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
style3.setVerticalAlignment(
XSSFCellStyle.VERTICAL_BOTTOM);
cell.setCellValue("I'm Bottom Right indent");
cell.setCellStyle(style3);
row = spreadsheet.createRow(8);
cell = (XSSFCell)row.createCell(3);
// Step 7: Justifying Alignment
XSSFCellStyle style4 = workbook.createCellStyle();
style4.setAlignment(XSSFCellStyle.ALIGN_JUSTIFY);
style4.setVerticalAlignment(
XSSFCellStyle.VERTICAL_JUSTIFY);
cell.setCellValue(
"I'm Justify indent nice to meet you");
cell.setCellStyle(style4);
// Step 8: 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(XSSFCellStyle.BORDER_THICK);
style5.setBottomBorderColor(
IndexedColors.BLUE.getIndex());
style5.setBorderLeft(XSSFCellStyle.BORDER_DOUBLE);
style5.setLeftBorderColor(
IndexedColors.GREEN.getIndex());
style5.setBorderRight(XSSFCellStyle.BORDER_HAIR);
style5.setRightBorderColor(
IndexedColors.RED.getIndex());
style5.setBorderTop(XSSFCellStyle.BIG_SPOTS);
style5.setTopBorderColor(
IndexedColors.Black.getIndex());
cell.setCellStyle(style5);
// Step 9: Fill Colors
// 9(a) Background color
row = spreadsheet.createRow((short)10);
cell = (XSSFCell)row.createCell((short)1);
XSSFCellStyle style6 = workbook.createCellStyle();
style6.setFillBackgroundColor(HSSFColor.BLUE.index);
style6.setFillPattern(
XSSFCellStyle.FILL_HORIZONTAL_CROSS_HATCH);
style6.setAlignment(XSSFCellStyle.ALIGN_FILL);
spreadsheet.setColumnWidth(1, 8000);
cell.setCellValue("FILL HORIZONTAL CROSS HATCH");
cell.setCellStyle(style6);
// 9(b) Foreground color
row = spreadsheet.createRow((short)12);
cell = (XSSFCell)row.createCell((short)1);
XSSFCellStyle style7 = workbook.createCellStyle();
style7.setFillForegroundColor(
HSSFColor.GREEN.index);
style7.setFillPattern(
XSSFCellStyle.THIN_VERTICAL_STRIPE);
style7.setAlignment(XSSFCellStyle.ALIGN_FILL);
cell.setCellValue("THIN VERTICAL STRIPE");
cell.setCellStyle(style7);
// Step 10: Creating a new file in the local
// directory by creating object of FileOutputStream
FileOutputStream out = new FileOutputStream(
new File("C:/poiexcel/stlingcells.xlsx"));
// Step 11: Write to above workbook created in
// initial step
workbook.write(out);
// Step 12: Close the file connection
out.close();
// Display message for console window when
// program is successfully executed
System.out.println("gfg.xlsx success");
}
}
输出