[code="java"]
/**
* 为工作表添加内容,不指定添加几列
*
* @param rs
* ResultSet 从数据库中得到的结果集
* @throws Exception
*/
public void addContent(ResultSet rs) throws Exception {
if (rs == null) {
return;
}
WritableSheet ws = (WritableSheet) vSheet.get(sheetCount-2);
ResultSetMetaData rsMetaD = rs.getMetaData();
int col = rsMetaD.getColumnCount();
//System.out.println("--->"+col);
int i = 2; //选择了从第三行开始,因为前两行要加标题和列名
while (rs.next()) {
for (int j = 0; j <col; j++) {
Label label = new Label(j, i, rs.getString(j+1));// Chinese.fromDatabase(rs.getString(j))
ws.addCell(label);
label = null;
}
i++;
}
}
[/code]
调用的代码
[code="java"]
sql = sb.toString();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
List list = new ArrayList();
Excel t = new Excel("d:\\test.xls");
Vector v = new Vector();
t.addSheet("人员");
t.addContent(rs);
t.createExcel();
[/code]
程序执行的结果见附件
问题:
我想在第一二行分别添加导出的列名和标题,请问代码如何写?
添加标题和表头跟添加普通的单元格时一样的,只是在添加标题的时候LZ可能想要合并和字体的样式等等,添加表头的也是一样,
[code="java"]
int rowIndex=0;//行
int colIndex=0;//列
Label title= new Label(colIndex, rowIndex, "标题");//如果LZ想要把标题放在中间,LZ就要使用合并了
ws.addCell(title);
//我这里只是提供一个思路,LZ添加表头的时候应该也是动态的,所以可以通过循环来做,就不用说了
Label hander1= new Label(colIndex, rowIndex+1, "表头1");
ws.addCell(hander1);
Label hander2= new Label(colIndex+1, rowIndex+1, "表头2");
ws.addCell(hander2);
//Label的重载方法最后一个参数是WritableCellFormat,LZ可以根据这些来设置单元格对应的样式
//合并单元格的方法是ws.mergeCells,LZ可以看下api
[/code]
添加标题就像楼上的老兄说的那样就可以了,列名的话可以从MetaData中取到,然后向设置标题那样做就可以了。