jxl复制单元格

zhangchu_63 2011-05-31 02:27:11
我有个Excel模板,里面有个表,格式比较复杂,我想根据动态查询的结果,赋值到表中。
如果是多条记录的话,就循环表格。
同事表头还有一段文字,表的最后还有一段填表说明。
各位,不知道有没有办法。
...全文
226 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jonlyandyumi 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhangchu_63 的回复:]
自己写了个单元格复制的方法,以慰后来人。

Java code

/**
* 拷贝多个单元格
*
* @param sheet
* @param from1row
* 需拷贝区域起始行
* @param from1col
* 需拷贝区域起始列
* @……
[/Quote]


对于字体和样式应该怎么处理?看你的代码只是对单元格的格式处理了
jonlyandyumi 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liguoqi_8 的回复:]
请问你查询出来的数据是什么类型的,如果是数组和List等数据类型的就可以直接用for循环addcell进去。如果不是这样的类型,你最好是转换数组、List、Map这种类型的。
[/Quote]

对于字体和样式应该怎么处理?看你的代码只是对单元格的格式处理了
zhangchu_63 2011-06-10
  • 打赏
  • 举报
回复
自己写了个单元格复制的方法,以慰后来人。

/**
* 拷贝多个单元格
*
* @param sheet
* @param from1row
* 需拷贝区域起始行
* @param from1col
* 需拷贝区域起始列
* @param to1row
* 需拷贝区域结束行
* @param to1col
* 需拷贝区域结束列
* @return boolean 成功或者失败
* @throws IOException
* @throws RowsExceededException
* @throws WriteException
*/
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;
}
arjila 2011-06-10
  • 打赏
  • 举报
回复
谢谢你!
牧之年华 2011-06-02
  • 打赏
  • 举报
回复
请问你查询出来的数据是什么类型的,如果是数组和List等数据类型的就可以直接用for循环addcell进去。如果不是这样的类型,你最好是转换数组、List、Map这种类型的。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧