JXL复制单元格
来源:互联网 发布:店铺淘宝客利润 编辑:程序博客网 时间:2024/05/21 21:55
最近做个项目,需要将数据保存到EXCEL文件中,EXCEL模板只有一条记录存放的表格,因此需要根据记录条数,复制出对应数量的表格来。且表格中包含合并单元格以及样式。
JXL自带的复制只能复制整个SHEET,不方便,我自己写了一个复制任意范围单元格的方法。欢迎大家批评!
/**
*
* @param sheet
* 操作对象
* @param mergedCell
* 所有合并单元格范围
* 考虑到该方法可能被循环调用多次,而且是复制同一个表格到不同地方,因此本参数记录的原始
* 被拷贝表格中的单元格,避免在多次循环后,本参数数据量不断增加,导致遍历时间太长。即本参数值需在调用
* 本方法的循环外就已经获得。
*
* @param from1Cols
* 被复制表格开始列
* @param from1Row
* 被复制表格开始行
* @param to1Col
* 被复制表格结束列
* @param to1Row
* 被复制表格结束行
* @param from2Col
* 复制到表格开始列
* @param from2Row
* 复制到表格开始行
* @return boolean
* 是否完整
* @throws IOException
*/
public static boolean copyCells(WritableSheet sheet, Range[] mergedCell,
int from1Col, int from1Row, int to1Col, int to1Row, int from2Col,
int from2Row) throws IOException {
// 复制表格的高和长
int tabHigh = to1Row - from1Row + 1;
try {
// 制作表格,先合并单元格
for (int i = 0; i < (to1Row - from1Row + 1); i++) {
// 选中区域下一行
sheet.insertRow(from2Row + i);
sheet
.setRowView(from2Row + i, sheet.getRowHeight(from1Row
+ i));
// 对插入行的列进行处理,即单元格
for (int j = 0; j < (to1Col - from1Col); j++) {
CellFormat cf = sheet.getWritableCell(from1Col + j,
from1Row + i).getCellFormat();
String content = sheet.getCell(from1Col + j, from1Row + i)
.getContents();
if (cf == null) {
sheet.addCell(new Label(from1Col + j, from2Row + i,
content));
} else {
sheet.addCell(new Label(from1Col + j, from2Row + i,
content, cf));
}
}
}
// 合并单元格
for (int i = 0; i < mergedCell.length; i++) {
int fromRow = mergedCell[i].getTopLeft().getRow();
int fromCol = mergedCell[i].getTopLeft().getColumn();
int toRow = mergedCell[i].getBottomRight().getRow();
int toCol = mergedCell[i].getBottomRight().getColumn();
// 如果检测到的合并单元格,在复制表格内,则将对应粘贴表的单元格合并。列数=原列数+表高,列数=原列数
if (fromRow >= from1Row && fromCol >= from1Col
&& toRow <= to1Row && toCol <= to1Col) {
sheet.mergeCells(fromCol, fromRow + from2Row, toCol, toRow
+ from2Row);
}
}
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
我用起来没什么问题,如果大家有什么好的建议可以说。
- JXL复制单元格
- jxl单元格合并,样式
- jxl的单元格设定
- jxl加边框,jxl合并单元格,单元格的设置
- jxl 对单元格类型设置
- jxl合并单元格导出excel
- JXL复制源码
- JXL复制源码
- java 操作excel,jxl加边框,jxl合并单元格,单元格的设置,单元格居中
- java 操作excel,jxl加边框,jxl合并单元格,单元格的设置,单元格居中
- java 操作excel,jxl加边框,jxl合并单元格,单元格的设置,单元格居中
- jxl 合并单元格 拷贝 边框 丢失
- jxl对某一列设置单元格格式
- jxl 判断excel 单元格是否为日期
- jxl 输出EXCEL 单元格数值型
- jxl导出excel时设置单元格格式
- jxl导出时间格式的单元格
- jxl导入时间单元格特殊处理
- vi Unknown terminal type 的问题解决方法
- Linux设备驱动子系统终极弹 - USB
- 开博了!!
- ubuntu环境源码编译android
- 什么是JDBC
- JXL复制单元格
- 对话框使用 CHtmlView 类打开网页
- JAVA String.format 方法使用介绍
- Android周学习Step By Step(3)--应用工程文件组成
- [译]2011年移动开发者经济学报告(四)
- some points to save your devices battery life
- sql server 锁
- C# winform 上传文件到服务器【3天的艰苦奋斗终于解决了】
- Webservice之CXF组件