Apache POI - 面试问题

亲爱的读者,这些 Apache POI 面试问题 是专门为让您了解您在面试时可能遇到的关于 Apache POI 主题的问题的性质而设计的。 根据我的经验,优秀的面试官几乎不打算在你的面试中问任何特定的问题,通常问题从主题的一些基本概念开始,然后根据进一步的讨论和你的回答继续:

Apache POI 是一种流行的 API,允许程序员使用 Java 程序创建、修改和显示 MS Office 文件。 它是由 Apache Software Foundation 开发和分发的开源库,用于使用 Java 程序设计或修改 Microsoft Office 文件。 它包含将用户输入数据或文件解码为 MS Office 文档的类和方法。


Apache POI 的组件

Apache POI 包含用于处理 MS Office 的所有 OLE2 复合文档的类和方法。 该 API 的组件列表如下所示。

  • 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 (Horrible Slide Layout Format) − 它用于阅读、创建和编辑 PowerPoint 演示文稿。

  • HDGF (Horrible DiaGram Format) − 它包含 MS-Visio 二进制文件的类和方法。

  • HPBF (Horrible PuBlisher Format) − 它用于读取和写入 MS-Publisher 文件。

它是 org.apache.poi.hssf.usermodel 包下的高级类。 它实现了 Workbook 接口并用于 .xls 格式的 Excel 文件。

它是一个用于表示高级和低级 Excel 文件格式的类。 它属于 org.apache.xssf.usemodel 包,实现了 Workbook 接口。

这是 org.apache.poi.hssf.usermodel 包下的一个类。 它可以创建 excel 电子表格,并允许格式化工作表样式和工作表数据。

这是一个代表 excel 电子表格的高级表示的类。 它在 org.apache.poi.hssf.usermodel 包下。

这是 org.apache.poi.xssf.usermodel 包下的一个类。 它实现了 Row 接口,因此它可以在电子表格中创建行。

这是 org.apache.poi.xssf.usermodel 包下的一个类。 它实现了 Cell 接口。 它是电子表格行中单元格的高级表示。

这是 org.apache.poi.xssf.usermodel 包下的一个类。 它将提供有关电子表格单元格中内容格式的可能信息。 它还提供了用于修改该格式的选项。 它实现了 CellStyle 接口。

这是 org.apache.poi.hssf.util 包下的一个类。 它提供不同的颜色作为嵌套类。 通常这些嵌套类使用它们自己的索引来表示。 它实现了颜色接口。

这是 org.apache.poi.xssf.usermodel 包下的一个类。 它实现了 Font 接口,因此它可以处理工作簿中的不同字体。

这是 org.apache.poi.xssf.usermodel 包下的一个类。 它实现了超链接接口。 它用于设置电子表格单元格内容的超链接。

这是 org.apache.poi.xssf.usermodel 包下的一个类。 它实现了 CreationHelper 接口。 它用作公式评估和设置超链接的支持类。

这是 org.apache.poi.xsssf.usermodel 包下的一个类。 它实现了 PrintSetup 接口。 它用于设置打印页面大小、区域、选项和设置。

以下代码片段用于创建电子表格。

//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook(); 

//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

以下代码片段用于创建行。

XSSFRow row = spreadsheet.createRow((short)1);

以下代码片段用于创建单元格。

//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);

单元格类型

单元格类型指定单元格是否可以包含字符串、数值或公式。 字符串单元格不能保存数值,而数字单元格不能保存字符串。 下面给出了单元格的类型、它们的值和类型语法。

单元格值的类型 类型语法
Blank cell value XSSFCell.CELL_TYPE_BLANK
Boolean cell value XSSFCell.CELL_TYPE_BOOLEAN
Error cell value XSSFCell.CELL_TYPE_ERROR
Numeric cell value XSSFCell.CELL_TYPE_NUMERIC
String cell value XSSFCell.CELL_TYPE_STRING

XSSFCellStyle 类用于设置单元格的样式。 以下代码片段可用于将单元格对齐设置为"左上角"。

XSSFCellStyle style1 = workbook.createCellStyle();
spreadsheet.setColumnWidth(0, 8000);
style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
cell.setCellValue("Top Left");
cell.setCellStyle(style1);

XSSFFont 类用于向单元格添加字体。 以下代码片段可用于将单元格的背景颜色设置为"绿色"。

//Create a new font and alter it.
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 30);
font.setFontName("IMPACT");
font.setItalic(true);
font.setColor(HSSFColor.BRIGHT_GREEN.index);

//Set font into style
XSSFCellStyle style = workbook.createCellStyle();
style.setFont(font);

XSSFCellStyle 类可用于旋转单元格。 以下代码片段可用于将单元格文本对齐设置为指定角度。

//90 degrees
XSSFCellStyle myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 90);
cell = row.createCell(5);
cell.setCellValue("90D angle");
cell.setCellStyle(myStyle);

XSSFCell.CELL_TYPE_FORMULA 可用于单元格作为公式单元格。

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("SUM(C2:C3)");

XSSFCell.CELL_TYPE_FORMULA 可用于单元格作为公式单元格。

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("POWER(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("POWER(C2:C3)");

XSSFCell.CELL_TYPE_FORMULA 可用于单元格作为公式单元格。

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("MAX(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("MAX(C2:C3)");

XSSFCell.CELL_TYPE_FORMULA 可用于单元格作为公式单元格。

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("FACT(C2)" );
cell = row.createCell(3);
cell.setCellValue("FACT(C2)");

XSSFCell.CELL_TYPE_FORMULA 可用于单元格作为公式单元格。

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SQRT(C2)" );
cell = row.createCell(3);
cell.setCellValue("SQRT(C2)");

XSSFHyperlink 可用于向单元格添加超链接。

CreationHelper createHelper = workbook.getCreationHelper();
XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
link.setAddress("http://www.w3ccoo.com/" );
cell.setHyperlink((XSSFHyperlink) link);

以下代码片段演示了使用 Apache POI 设置 Excel 的可打印区域。

XSSFWorkbook workbook = new XSSFWorkbook(); 
XSSFSheet spreadsheet = workbook
.createSheet("Print Area");

//set print area with indexes
workbook.setPrintArea(
   0, //sheet index
   0, //start column
   5, //end column
   0, //start row
   5 //end row
);

//set paper size
spreadsheet.getPrintSetup().setPaperSize(
XSSFPrintSetup.A4_PAPERSIZE);

//set display grid lines or not
spreadsheet.setDisplayGridlines(true);

//set print grid lines or not
spreadsheet.setPrintGridlines(true);

下一步是什么?

此外,您可以回顾一下您过去完成的有关该主题的作业,并确保您能够自信地谈论它们。 如果你比较新鲜,那么面试官不会期望你会回答非常复杂的问题,而是必须让你的基本概念非常强大。

其次,如果您不能回答几个问题,这实际上并不重要,但重要的是,无论您回答什么,您都必须充满信心地回答。 所以,在你的面试中保持自信。 我们在tutorialspoint 祝你好运,有一个好的面试官,祝你未来的工作一切顺利。 干杯:-)

❮ Apache POI 问题和解答