第一范文网 - 专业文章范例文档资料分享平台

Apache POI HSSF and XSSF 快速指南 帮助文档 API poi-3.15

来源:用户分享 时间:2025/9/19 3:32:21 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

//你也可以将日期设置为java.util.Calendar cell = row.createCell(2);

cell.setCellValue(Calendar.getInstance()); cell.setCellStyle(cellStyle);

//将输出写入文件

FileOutputStream fileOut = new FileOutputStream(\ wb.write(fileOut); fileOut.close();

5、使用不同类型的单元格

Workbook wb = new HSSFWorkbook();

Sheet sheet = wb.createSheet(\ Row row = sheet.createRow((short)2); row.createCell(0).setCellValue(1.1);

row.createCell(1).setCellValue(new Date());

row.createCell(2).setCellValue(Calendar.getInstance()); row.createCell(3).setCellValue(\ row.createCell(4).setCellValue(true);

row.createCell(5).setCellType(CellType.ERROR);

//将输出写入文件

FileOutputStream fileOut = new FileOutputStream(\ wb.write(fileOut); fileOut.close();

6、在行和单元格上的迭代

在某些情况下,在迭代时,您需要完全控制如何处理缺失或空白行和单元格, 并且您需要确保访问每个单元格,而不仅仅是文件中定义的单元格。

(CellIterator只会返回文件中定义的单元格,这主要是具有值或样式的单元格,但它取决于Excel)。

在这些情况下,您应该获取行的第一列和最后一列信息,然后调用getCell(int,MissingCellPolicy)来获取单元格。

使用MissingCellPolicy控制如何处理空白或空单元格。 //决定要处理的行

int rowStart = Math.min(15,sheet.getFirstRowNum()); int rowEnd = Math.max(1400,sheet.getLastRowNum());

for(int rowNum = rowStart; rowNum

Row r = sheet.getRow(rowNum); if(r == null){

//这整行是空的 //根据需要处理它 continue; }

int lastColumn = Math.max(r.getLastCellNum(),MY_MINIMUM_COLUMN_COUNT); for(int cn = 0; cn

Cell c = r.getCell(cn,Row.RETURN_BLANK_AS_NULL); if(c == null){

//此单元格中的电子表格为空 } else {

//做一些有用的单元格的内容 } } }

7、获取单元格内容

要获取单元格的内容,你首先需要知道它是什么样的单元格(例如,要求字符串单元格的数字内容会得到一个NumberFormatException)。

因此,您将需要打开单元格的类型,然后为该单元格调用适当的getter。

在下面的代码中,我们循环遍历每个单元格,打印出单元格的引用(例如A3),然后打印单元格的内容。

DataFormatter formatter = new DataFormatter(); Sheet sheet1 = wb.getSheetAt(0); for (Row row : sheet1) { for (Cell cell : row) {

CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex()); System.out.print(cellRef.formatAsString()); System.out.print(\

//通过获取单元格值并应用任何数据格式(日期,0.00,1.23e9,$ 1.23等)获取单元格中显示的文本。

String text = formatter.formatCellValue(cell); System.out.println(text);

//或者,自己获取值和格式化 switch (cell.getCellTypeEnum()) { case CellType.STRING:

System.out.println(cell.getRichStringCellValue().getString()); break;

case CellType.NUMERIC:

if (DateUtil.isCellDateFormatted(cell)) {

System.out.println(cell.getDateCellValue()); } else {

System.out.println(cell.getNumericCellValue()); }

break;

case CellType.BOOLEAN:

System.out.println(cell.getBooleanCellValue()); break;

case CellType.FORMULA:

System.out.println(cell.getCellFormula()); break;

case CellType.BLANK: System.out.println(); break; default:

System.out.println(); } } }

8、文本提取

对于大多数文本提取需求,标准ExcelExtractor类应该提供了您所需要的。 InputStream inp = new FileInputStream(\

HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp)); ExcelExtractor extractor = new ExcelExtractor(wb);

extractor.setFormulasNotResults(true); extractor.setIncludeSheetNames(false); String text = extractor.getText();

对于非常奇特的文本提取,XLS到CSV等,看看/src /examples /src /org /apache /poi /hssf /eventusermodel /examples /XLS2CSV mra.java

9、文件与InputStreams

打开Workbook (.xls HSSFWorkbook或.xlsx XSSFWorkbook)时,可以从文件或InputStream加载Workbook 。使用File对象允许较低的内存消耗,而InputStream需要更多的内存,因为它必须

缓冲整个文件。

如果使用WorkbookFactory,很容易使用一个或另一个: //使用文件

Workbook wb = WorkbookFactory.create(new File(\

//使用InputStream,需要更多内存

Workbook wb = WorkbookFactory.create(new FileInputStream(\

如果直接使用HSSFWorkbook或XSSFWorkbook,通常应该通过POIFSFileSystem或OPCPackage来完全控制生命周期(包括完成后关闭文件): //HSSFWorkbook, File

NPOIFSFileSystem fs = new NPOIFSFileSystem(new File(\ HSSFWorkbook wb = new HSSFWorkbook(fs.getRoot(), true); ....

fs.close();

//HSSFWorkbook, InputStream, 需要更多内存

NPOIFSFileSystem fs = new NPOIFSFileSystem(myInputStream); HSSFWorkbook wb = new HSSFWorkbook(fs.getRoot(), true);

//XSSFWorkbook, File

OPCPackage pkg = OPCPackage.open(new File(\ XSSFWorkbook wb = new XSSFWorkbook(pkg); ....

pkg.close();

//XSSFWorkbook, InputStream, 需要更多内存

OPCPackage pkg = OPCPackage.open(myInputStream); XSSFWorkbook wb = new XSSFWorkbook(pkg); ....

pkg.close();

10、对齐单元格

public static void main(String[] args) throws Exception {

Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook(); Sheet sheet = wb.createSheet();

Row row = sheet.createRow((short) 2); row.setHeightInPoints(30);

createCell(wb, row, (short) 0, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_BOTTOM); createCell(wb, row, (short) 1, CellStyle.ALIGN_CENTER_SELECTION,

搜索更多关于: Apache POI HSSF and XSSF 快速指南 的文档
Apache POI HSSF and XSSF 快速指南 帮助文档 API poi-3.15.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4l36s8ne4l6zh7t4fk6m_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top