面试问题(Apache POI Interview Questions)

优质
小牛编辑
163浏览
2023-12-01

亲爱的读者,这些Apache POI Interview Questions专门设计用于让您熟悉在面试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 (可怜的混淆实现文件系统) - 该组件是所有其他POI元素的基本因素。 它用于显式读取不同的文件。

  • HSSF (可怕的电子表格格式) - 用于读取和写入MS-Excel文件的xls格式。

  • XSSF (XML电子表格格式) - 用于MS-Excel的xlsx文件格式。

  • HPSF (可怕的属性集格式) - 用于提取MS-Office文件的属性集。

  • HWPF (可怕的字处理器格式) - 用于读写MS-Word的doc扩展文件。

  • XWPF (XML字处理器格式) - 用于读写MS-Word的docx扩展文件。

  • HSLF (可怕的幻灯片布局格式) - 用于阅读,创建和编辑PowerPoint演示文稿。

  • HDGF (可怕的DiaGram格式) - 它包含MS-Visio二进制文件的类和方法。

  • HPBF (可怕的PuBlisher格式) - 用于读写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包下的一个类。 它提供不同的颜色作为嵌套类。 通常这些嵌套类使用它们自己的索引来表示。 它实现了Color接口。

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

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

这是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 valueXSSFCell.CELL_TYPE_BLANK
Boolean cell valueXSSFCell.CELL_TYPE_BOOLEAN
Error cell valueXSSFCell.CELL_TYPE_ERROR
Numeric cell valueXSSFCell.CELL_TYPE_NUMERIC
字符串单元格值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.iowiki.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);

接下来是什么 (What is Next?)

此外,您可以查看您对该主题所做的过去作业,并确保您能够自信地说出这些作业。 如果你更新鲜,那么面试官不会指望你会回答非常复杂的问题,而是你必须使你的基本概念非常强大。