//感谢老婆 的支持;
/**
* 复制行
*
* @param startRowIndex
* 起始行
* @param endRowIndex
* 结束行
* @param pPosition
* 目标起始行位置
*/
public void copyRows(int startRow, int endRow, int pPosition) {
int pStartRow = startRow - 1;
int pEndRow = endRow - 1;
int targetRowFrom;
int targetRowTo;
int columnCount;
CellRangeAddress region = null;
int i;
int j;
if (pStartRow == -1 || pEndRow == -1) {
return;
}
for (i = 0; i < currentSheet.getNumMergedRegions(); i++) {
region = currentSheet.getMergedRegion(i);
if ((region.getFirstRow() >= pStartRow)
&& (region.getLastRow() <= pEndRow)) {
targetRowFrom = region.getFirstRow() - pStartRow + pPosition;
targetRowTo = region.getLastRow() - pStartRow + pPosition;
CellRangeAddress newRegion = region.copy();
newRegion.setFirstRow(targetRowFrom);
newRegion.setFirstColumn(region.getFirstColumn());
newRegion.setLastRow(targetRowTo);
newRegion.setLastColumn(region.getLastColumn());
currentSheet.addMergedRegion(newRegion);
}
}
for (i = pStartRow; i <= pEndRow; i++) {
HSSFRow sourceRow = currentSheet.getRow(i);
columnCount = sourceRow.getLastCellNum();
if (sourceRow != null) {
HSSFRow newRow = currentSheet.createRow(pPosition - pStartRow
+ i);
newRow.setHeight(sourceRow.getHeight());
for (j = 0; j < columnCount; j++) {
HSSFCell templateCell = sourceRow.getCell(j);
if (templateCell != null) {
HSSFCell newCell = newRow.createCell(j);
copyCell(templateCell, newCell);
}
}
}
}
}
private void copyCell(HSSFCell srcCell, HSSFCell distCell) {
distCell.setCellStyle(srcCell.getCellStyle());
if (srcCell.getCellComment() != null) {
distCell.setCellComment(srcCell.getCellComment());
}
int srcCellType = srcCell.getCellType();
distCell.setCellType(srcCellType);
if (srcCellType == HSSFCell.CELL_TYPE_NUMERIC) {
if (HSSFDateUtil.isCellDateFormatted(srcCell)) {
distCell.setCellValue(srcCell.getDateCellValue());
} else {
distCell.setCellValue(srcCell.getNumericCellValue());
}
} else if (srcCellType == HSSFCell.CELL_TYPE_STRING) {
distCell.setCellValue(srcCell.getRichStringCellValue());
} else if (srcCellType == HSSFCell.CELL_TYPE_BLANK) {
// nothing21
} else if (srcCellType == HSSFCell.CELL_TYPE_BOOLEAN) {
distCell.setCellValue(srcCell.getBooleanCellValue());
} else if (srcCellType == HSSFCell.CELL_TYPE_ERROR) {
distCell.setCellErrorValue(srcCell.getErrorCellValue());
} else if (srcCellType == HSSFCell.CELL_TYPE_FORMULA) {
distCell.setCellFormula(srcCell.getCellFormula());
} else { // nothing29
}
}
分享到:
相关推荐
Apache POI是一个流行的开源库,允许开发者处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。POI-TL是POI的一个扩展,专门用于处理Word文档(.docx格式),提供了更高级的功能,如模板填充和文档合并。 ...
在IT行业中,处理电子表格数据是一项常见的任务,尤其是在大数据分析、报表生成以及自动化流程中。Apache POI 是一个流行的开源库,它...通过理解和实践这些步骤,你可以创建出自己的Excel复制工具,满足各种定制需求。
本示例“java-poi-excel-导出20万条记录【源代码】”展示了如何使用Apache POI库来高效地处理大数据量的Excel导出,避免内存溢出的问题。Apache POI是一个流行的开源Java API,用于读写Microsoft Office格式的文件,...
本篇将详细介绍如何使用Apache POI来读取Excel模板,复制工作表(Sheet)以及复制行,并特别关注如何处理合并单元格的情况。 首先,我们需要引入Apache POI的相关依赖库到我们的项目中。在Maven项目中,可以在pom....
- 使用HSSFWorkbook和HSSFSheet创建新的Excel文件,添加行和单元格数据。 - 使用XSSFWorkbook和XSSFSheet读取.xlsx文件,获取数据并进行分析。 - 使用HWPFDocument读取Word文档,遍历Paragraph对象,提取文本内容...
7. **工作表操作**:可以创建、删除、复制工作表,调整工作表顺序,以及对工作表的行和列进行操作,如插入、删除、合并单元格等。 8. **事件模型API(Event API)**:对于大数据量的读取,Apache POI还提供了事件...
在IT行业中,Apache POI是一个广泛使用的开源库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。本篇文章将详细讲解如何利用Apache POI库来读取Excel数据并将其写入到Word文档中。 首先,...
或者,你可以直接将 "poi-util" 中的类复制到你的项目中,这样无需引入额外的依赖。 poi-util 包含了核心的 Excel 操作类,比如 `ExcelExportUtil` 用于导出数据到 Excel,`ExcelImportUtil` 用于从 Excel 导入...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。"poi-src-3.11" 提供的是Apache POI 3.11版本的源代码,这个版本是相对较为新的,旨在提供更高效、更便捷的方式来...
Apache POI 是一个开源项目,由Apache软件基金会维护,它主要致力于处理Microsoft Office格式的文件,如Word(.doc和.docx)、Excel(.xls和.xlsx)、PowerPoint(.ppt和.pptx)等。Apache POI 提供了Java API,使得...
- 处理工作表的行和列,如插入、删除、移动或复制。 - 创建和管理图表,展示数据可视化。 - 处理超链接、图像和其他复杂对象。 - 进行数据验证和条件格式化。 在实际项目中,Apache POI通常用于数据导入导出、报表...
poi 将多个excel复制到新的excel 的多个sheet页中 并复制所有的样式 包括字体的样式 背景颜色 单元格宽度 等
标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...
poi 复制指定行到指定位置. 未包含jar包
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。这个"poi-3.8.zip"压缩包包含了Apache POI 3.8版本的所有核心库,允许开发者在Java应用程序中创建、修改和读取...
在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...
- 还使用了`copyCellStyleOfRow`方法来复制行样式,确保新创建的行与模板中的样式一致。 #### 三、具体实现 1. **初始化工作簿**: - 通过`new HSSFWorkbook(new FileInputStream(filePath))`来读取指定路径下的...
为更方便的使用POI的API来操作Excel(2003)文件,对POI中针对Excel文件的读写进行了简单封装。此类中包含以下功能: 1.根据模板创建Excel文件 ...压缩包中包含POI的jar文件、POIExcel的jar文件及POIExcel的源码
本篇将详细讲解如何使用Apache POI来复制Excel的Sheet页。 一、Apache POI简介 Apache POI是一个开源项目,它为Java程序员提供了API,可以处理Microsoft Office格式的文件。在Excel方面,POI提供了HSSF(Horrible ...
大家都知道用Jave解析Excel要用到POI的jar包,但是在POI版本是5.0.0的时候,用到的jar包不止是一个poi的包,用到了8个jar包,少一个项目都会报找不到类的错,运行不起来,这个压缩包的里面的jar直接全部复制拿去用