关于JXL就不多做介绍了,这是自己封装的工具类。
功能简介:
1、向Excel文档插入数据,可以是多行可以是多列,保留原单元格格式不变
2、向Excel文档插入一个新行,并且使用与上一行完全相同的格式
3、拷贝一个sheet,与原sheet内容完全一致
4、等等
需要的第三方JAR包:jxl.jar,见附件
工具类的完整代码如下:
import java.io.File; import java.io.IOException; import jxl.Workbook; import jxl.WorkbookSettings; import jxl.format.CellFormat; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.WritableCell; import jxl.write.WritableCellFormat; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; /** * Excel工具类 * * <pre> * 基于jxl.jar类库 * </pre> * * @author 陈峰 */ public class JXLExcelMakerUtil { private File excelFile; private Workbook workBook; private WritableWorkbook wWorkBook; public JXLExcelMakerUtil(File file) throws BiffException, IOException { this.excelFile = file; WorkbookSettings setting = new WorkbookSettings(); setting.setSuppressWarnings(true); this.workBook = Workbook.getWorkbook(excelFile, setting); this.wWorkBook = Workbook.createWorkbook(excelFile, this.workBook); } /** * 写入一组值 * * @param sheetNum * 写入的sheet的编号 * @param fillRow * 是写入行还是写入列 * @param startRowNum * 开始行号 * @param startColumnNum * 开始列号 * @param contents * 写入的内容数组 * @throws BiffException * @throws IOException * @throws WriteException */ public void writeArrayToExcel(int sheetNum, boolean fillRow, int startRowNum, int startColumnNum, Object[] contents) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); writeArrayToExcel(sheet, fillRow, startRowNum, startColumnNum, contents); } /** * 写入一组值 * * @param sheetName * 写入的sheet的名称 * @param fillRow * 是写入行还是写入列 * @param startRowNum * 开始行号 * @param startColumnNum * 开始列号 * @param contents * 写入的内容数组 * @throws BiffException * @throws IOException * @throws WriteException */ public void writeArrayToExcel(String sheetName, boolean fillRow, int startRowNum, int startColumnNum, Object[] contents) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetName); writeArrayToExcel(sheet, fillRow, startRowNum, startColumnNum, contents); } /** * 写入一组值 * * @param sheetNum * 写入的sheet的编号 * @param fillRow * 是写入行还是写入列 * @param startColumnRowNum * 开始单元格的位置 * @param contents * 写入的内容数组 * @throws BiffException * @throws IOException * @throws WriteException */ public void writeArrayToExcel(int sheetNum, boolean fillRow, String startColumnRowNum, Object[] contents) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); WritableCell startCell = sheet.getWritableCell(startColumnRowNum); int startRowNum = startCell.getRow(); int startColumnNum = startCell.getColumn(); this.writeArrayToExcel(sheetNum, fillRow, startRowNum, startColumnNum, contents); } private void writeArrayToExcel(WritableSheet sheet, boolean fillRow, int startRowNum, int startColumnNum, Object[] contents) throws WriteException, RowsExceededException { for (int i = 0, length = contents.length; i < length; i++) { int rowNum; int columnNum; // 以行为单位写入 if (fillRow) { rowNum = startRowNum; columnNum = startColumnNum + i; } // 以列为单位写入 else { rowNum = startRowNum + i; columnNum = startColumnNum; } this.writeToCell(sheet, rowNum, columnNum, contents[i]); } } /** * 向一个单元格写入值 * * @param sheetNum * sheet的编号 * @param rowNum * 行号 * @param columnNum * 列号 * @param value * 写入的值 * @throws BiffException * @throws IOException * @throws WriteException */ public void writeToExcel(int sheetNum, int rowNum, int columnNum, Object value) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); this.writeToCell(sheet, rowNum, columnNum, value); } /** * 向一个单元格写入值 * * @param sheetNum * sheet的编号 * @param columnRowNum * 单元格的位置 * @param value * 写入的值 * @throws BiffException * @throws IOException * @throws WriteException */ public void writeToExcel(int sheetNum, String columnRowNum, Object value) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); this.writeToCell(sheet, columnRowNum, value); } /** * 向一个单元格写入值 * * @param sheetName * sheet的名称 * @param columnRowNum * 单元格的位置 * @param value * 写入的值 * @throws BiffException * @throws IOException * @throws WriteException */ public void writeToExcel(String sheetName, String columnRowNum, Object value) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetName); this.writeToCell(sheet, columnRowNum, value); } private void writeToCell(WritableSheet sheet, int rowNum, int columnNum, Object value) throws WriteException, RowsExceededException { WritableCell cell = sheet.getWritableCell(columnNum, rowNum); writeToCell(sheet, cell, value); } private void writeToCell(WritableSheet sheet, String columnRowNum, Object value) throws WriteException, RowsExceededException { WritableCell cell = sheet.getWritableCell(columnRowNum); writeToCell(sheet, cell, value); } private void writeToCell(WritableSheet sheet, WritableCell cell, Object value) throws WriteException, RowsExceededException { CellFormat cellFormat = cell.getCellFormat(); Label label; if (cellFormat == null) { label = new Label(cell.getColumn(), cell.getRow(), convertString(value)); } else { label = new Label(cell.getColumn(), cell.getRow(), convertString(value), cellFormat); } sheet.addCell(label); } /** * 向一个单元格写入值 * * @param sheetNum * @param rowNum * @param columnNum * @param value * @param lineWrap * @throws BiffException * @throws IOException * @throws WriteException */ public void writeToExcel(int sheetNum, int rowNum, int columnNum, Object value, boolean lineWrap) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); this.writeToCell(sheet, rowNum, columnNum, value, lineWrap); } /** * 向一个单元格写入值 * * @param sheetNum * @param columnRowNum * @param value * @param lineWrap * @throws BiffException * @throws IOException * @throws WriteException */ public void writeToExcel(int sheetNum, String columnRowNum, Object value, boolean lineWrap) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); this.writeToCell(sheet, columnRowNum, value, lineWrap); } /** * 向一个单元格写入值 * * @param sheetName * sheet的名称 * @param columnRowNum * 写入单元格的位置 * @param value * 写入单元格的值 * @param lineWrap * 是否换行 * @throws BiffException * @throws IOException * @throws WriteException */ public void writeToExcel(String sheetName, String columnRowNum, Object value, boolean lineWrap) throws BiffException, IOException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetName); this.writeToCell(sheet, columnRowNum, value, lineWrap); } private void writeToCell(WritableSheet sheet, int rowNum, int columnNum, Object value, boolean lineWrap) throws WriteException, RowsExceededException { WritableCell cell = sheet.getWritableCell(columnNum, rowNum); writeToCell(sheet, cell, value, lineWrap); } private void writeToCell(WritableSheet sheet, String columnRowNum, Object value, boolean lineWrap) throws WriteException, RowsExceededException { WritableCell cell = sheet.getWritableCell(columnRowNum); writeToCell(sheet, cell, value, lineWrap); } private void writeToCell(WritableSheet sheet, WritableCell cell, Object value, boolean lineWrap) throws WriteException, RowsExceededException { CellFormat cellFormat = cell.getCellFormat(); Label label; if (cellFormat == null) { label = new Label(cell.getColumn(), cell.getRow(), convertString(value)); } else { WritableCellFormat wCellFormat = new WritableCellFormat(cellFormat); wCellFormat.setWrap(lineWrap); label = new Label(cell.getColumn(), cell.getRow(), convertString(value), wCellFormat); } sheet.addCell(label); } /** * 插入一行 * * @param sheetNum * 插入行的sheet的编号 * @param rowNum * 插入行的位置 * @throws RowsExceededException * @throws WriteException */ public void insertRow(int sheetNum, int rowNum) throws RowsExceededException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); sheet.insertRow(rowNum); } /** * 插入一行并参照与上一行相同的格式 * * @param sheetNum * 插入行的sheet的编号 * @param rowNum * 插入行的位置 * @param columnSize * 需要参照上一行格式的单元格数量 * @throws RowsExceededException * @throws WriteException */ public void insertRowWithFormat(int sheetNum, int rowNum, int columnSize) throws RowsExceededException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); insertRowWithFormat(sheet, rowNum, columnSize); } /** * 插入一行并参照与上一行相同的格式 * * @param sheetName * 插入行的sheet的名称 * @param rowNum * 插入行的位置 * @param columnSize * 需要参照上一行格式的单元格数量 * @throws RowsExceededException * @throws WriteException */ public void insertRowWithFormat(String sheetName, int rowNum, int columnSize) throws RowsExceededException, WriteException { WritableSheet sheet = this.wWorkBook.getSheet(sheetName); insertRowWithFormat(sheet, rowNum, columnSize); } /** * 插入一行并参照与上一行相同的格式 * * @param sheet * 插入行的sheet * @param rowNum * 插入行的位置 * @param columnSize * 需要参照上一行格式的单元格数量 * @throws RowsExceededException * @throws WriteException */ private void insertRowWithFormat(WritableSheet sheet, int rowNum, int columnSize) throws RowsExceededException, WriteException { sheet.insertRow(rowNum); sheet.setRowView(rowNum, sheet.getRowView(rowNum - 1)); for (int i = 0; i < columnSize; i++) { CellFormat cellFormat = sheet.getCell(i, rowNum - 1) .getCellFormat(); if (cellFormat != null) { Label label = new Label(i, rowNum, "", cellFormat); sheet.addCell(label); } } } /** * 重命名一个sheet * * @param sheetNum * sheet的编号 * @param newName * 新的名称 * @throws IOException */ public void renameSheet(int sheetNum, String newName) throws IOException { WritableSheet sheet = this.wWorkBook.getSheet(sheetNum); sheet.setName(newName); } /** * 重命名一个sheet * * @param oldName * 旧的名称 * @param newName * 新的名称 * @throws IOException */ public void renameSheet(String oldName, String newName) throws IOException { WritableSheet sheet = this.wWorkBook.getSheet(oldName); sheet.setName(newName); } /** * 拷贝一个sheet * * @param oldSheetNum * 旧的sheet的编号 * @param newSheetNum * 新的sheet的编号 * @param newSheetName * 新的sheet的名称 */ public void copySheet(int oldSheetNum, int newSheetNum, String newSheetName) { this.wWorkBook.copySheet(oldSheetNum, newSheetName, newSheetNum); } /** * 写入Excel文件并关闭 */ public void writeAndClose() { if (this.wWorkBook != null) { try { this.wWorkBook.write(); } catch (Exception e) { } } if (this.wWorkBook != null) { try { this.wWorkBook.close(); } catch (Exception e) { } } if (this.workBook != null) { try { this.workBook.close(); } catch (Exception e) { } } } private static String convertString(Object value) { if (value == null) { return ""; } else { return value.toString(); } } }
相关推荐
《使用jxl.jar包在Java中操作Excel文件的详尽指南》 在Java开发中,与Excel文件交互是一项常见的任务,比如数据导入、导出、分析等。jxl.jar库提供了一个强大的解决方案,使得开发者无需依赖Windows环境即可处理...
总结来说,jxl.jar库是Java操作Excel的一个实用工具,它提供了丰富的API来读取、修改和创建Excel文件。通过熟练掌握这个库,开发者可以方便地在Java应用程序中集成Excel相关的功能,进行数据处理和报告生成等工作。...
《使用jxl.jar进行Excel数据导出详解》 在IT领域,尤其是在数据分析、报表生成以及数据交换等场景中,Excel文件常常被用作数据存储和展示的工具。Java程序员经常需要处理与Excel文件的交互,比如导出数据到Excel。...
《使用Java的jxl库创建...在实际开发中,结合jxl.jar和其他辅助工具,我们可以构建出功能丰富的Excel处理系统,满足各种业务需求。不过,随着技术的发展,开发者也需要关注更新的解决方案,以适应不断变化的技术环境。
【标题】"jxl.jar原版、修改后的jxl.jar解决web dynpro中乱码问题"涉及的关键技术点主要集中在两个方面:一是Java的jar包处理,二是Web Dynpro组件与Excel数据交互时的字符编码问题。下面将对这两个主题进行深入的...
本文将详细介绍如何使用`jxl`库进行Excel操作,并提供一个简单的实例。 首先,`jxl.jar`是`jxl`库的主要组件,你需要将其添加到你的项目类路径中。这可以通过将`jxl.jar`放在`lib`目录下或在IDE(如Eclipse、...
总的来说,jxl.jar作为一个轻量级的Excel操作工具,对于处理.xls文件的应用场景,无疑是一个理想的选择。然而,面对.xlsx格式的挑战,开发者需要权衡性能和兼容性的需求,选择更适合的库进行开发。在不断发展的IT...
总结,`jxl.jar`是Java中处理Excel文件的一个基础工具,适用于小型项目和简单的Excel操作。对于复杂的需求,开发者可能需要寻找更强大、更现代化的替代方案。但无论如何,理解`jxl.jar`的基本用法仍然是Java开发者的...
jxl.jar库为Java开发者提供了一个强大的工具,它允许我们方便地读取、写入和修改Excel文件。本文将对jxl.jar的源码进行深入探讨,揭示其内部工作机制,帮助读者更好地理解和利用这个开源库。 首先,jxl.jar的核心...
总的来说,jxl.jar是Java开发环境下处理Excel数据的得力工具,无论是在数据分析、报表生成还是数据导入导出场景下,都能发挥重要作用。通过熟练掌握jxl.jar的使用,开发者可以大大提高工作效率,减少手动操作的繁琐...
《深入理解Java库jxl.jar:操作Excel的利器》 在Java编程中,处理Excel文件是一项常见的任务,尤其是在数据导入导出、报表生成等领域。jxl.jar作为一个纯Java实现的库,为开发者提供了便捷的方式来读取和写入Excel...
jxl.jar的核心类包括Sheet和Workbook,它们分别对应Excel中的工作表和工作簿,是操作Excel文件的基础。 1. **Workbook类**:这是jxl库的核心类,代表一个Excel工作簿。你可以通过Workbook的静态方法createWorkbook...
总之,jxl.jar是Java开发人员处理Excel文件的重要工具,通过其提供的API,可以轻松地实现Excel数据的读写和格式化操作。jexcelapi_2_4_5版本的文档将帮助你更深入地了解和利用这些功能,提高工作效率。无论你是要...
总之,jxl.jar是一个实用的工具,可以方便地在Android应用中读取Excel数据。然而,由于Android环境的特殊性,可能需要进行额外的兼容性和性能调整。在实际开发中,确保测试在各种设备和Excel文件类型上的行为,以...
**Java Excel工具包——jxl.jar** 在Java编程中,处理Excel文件是一项常见的任务,尤其在数据导入导出、报表生成或数据分析等场景下。jxl.jar是一个专门为Java设计的库,它允许开发者轻松地读取、写入和修改Excel...
总之,`jxl.jar`是一个非常实用的工具,它使Java开发者能够方便地处理Excel文件,无论是简单的数据导入导出还是复杂的报表生成,都能轻松应对。记得在使用时处理好异常,确保文件读写的安全性。
**标题详解:**"jxl.jar (JAVA对EXCEL表格的操作)" `jxl.jar` 是一个Java类库,主要用于处理Microsoft Excel文件。这个库使得Java开发者能够在程序中读取、写入、编辑以及创建Excel电子表格。它提供了丰富的API接口...
JXL.jar文件就是这个库的实现,它包含了所有必要的类和方法,使得开发者可以方便地与Excel工作簿进行交互,包括处理包含图片等二进制数据的工作表。 JExcelApi支持多种功能,如: 1. **读取Excel文件**:你可以...
在Java应用程序中,如果需要处理Excel数据,如数据分析、报表生成或导入导出功能,jxl.jar包就是一个非常实用的工具。这个库提供了丰富的API,允许开发者对Excel工作簿、工作表、单元格等进行操作。 一、jxl.jar包...