什么样的界面,可以用Java导出Excel包含多个Sheet页? 20

界面是什么样子的,代码怎么写。... 界面是什么样子的,代码怎么写。 展开
 我来答
乌鸦说电影原创解说
2015-03-16 · TA获得超过4182个赞
知道大有可为答主
回答量:3161
采纳率:83%
帮助的人:1415万
展开全部
以下代码仅供参考:
//生成一个excel文件
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
log.error(e); }
long totle = service.getTotle(searchParameters);//业务逻辑方法,获取总数,便于在excel分多个工作表
//按65536条数据分页
float res=Float.parseFloat(String.valueOf(totle));
float mus=65536;
float avg=res/mus;
Map cols = (Map) request.getSession().getAttribute("columnsMap"); //业务逻辑方法
for (int i = 0; i < avg+1; i++) {
searchParameters.setEvent_id(String.valueOf(i*mus)); //分页查询条件
searchParameters.setTotalLimit(String.valueOf((i+1)*mus));//分页查询条件
List result = service.getEvents(searchParameters); //分页查询方法

if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("列表"+(i+1), i);
String colss = ((String) cols.get("cols")).substring("selected"
.length() + 1);
String[] columns = colss.split(","); //业务逻辑方法(添加标题)
String[] colNames = ((String) cols.get("colNames")).split(",");
for (int j = 0; j < columns.length; j++) {
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
wcfFC.setBackground(Colour.GRAY_25);
Label label = new Label(j, 0,colNames[j],wcfFC);
ws.setColumnView(j, 20); //设置列宽
ws.addCell(label); //添加标题
}
String str="";
//下面开始添加单元格
for(int m=0;m<result.size();m++){
for(int j=0;j<columns.length;j++){
Map map = (Map) result.get(m);
//在表格中添加(业务数据)
for (Object key : map.keySet()) {
Object val = map.get(key);
str=String.valueOf(val);
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, m+1, str);
//将生成的单元格添加到工作表中
ws.addCell(labelC);
}

}
}
}

}
//Excel操作完毕之后,关闭所有的操作资源
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
log.error(e);
} catch (WriteException e) {
log.error(e);
}

//把生成的文件下载
File file = new File(fileName);
if(!file.exists()) throw new Exception("文件不存在!");
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
OutputStream outputStream = response.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
response.setContentType("application/x-download");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("事件列表.xls", "UTF-8"));
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = bufferedInputStream.read(buffer, 0, 8192)) != -1) {
bufferedOutputStream.write(buffer, 0, bytesRead);
}
bufferedOutputStream.flush();
fileInputStream.close();
bufferedInputStream.close();
outputStream.close();
bufferedOutputStream.close();

希望能够帮助到你,望采纳!
God_Summer
2015-12-02 · TA获得超过127个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:51.7万
展开全部
导出EXCEL直接调用后台的JAVA代码,是根据后台系统代码中的设定,利用导出工具,可以通过写代码创建多个Sheet页,EXCEL中的数据是在后台取的,不是从前台获取的,只需要把数据查询的条件属性转发到后台,然后后台根据这些条件查询、处理数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wh猎人
2015-03-16 · TA获得超过1125个赞
知道大有可为答主
回答量:1157
采纳率:89%
帮助的人:660万
展开全部
跟什么界面没有关系的。关键是看你用的什么API。
POI中是通过new HSSFPOI().createSheets来创建多个sheet。
追问

界面做成,Tab这样的,每一个Tab对应一个列表。这样可以导出一个Excel中包含多个Sheet(表1,表2,,表3,表4,表5)吗?

追答

可以啊。

HSSFPOI xls=new HSSFPOI();
xls.createSheets(5);// 创建有五个sheet页的excel
xls.setCurrentSheet(0);// 设置操作第一个sheet
xls.setSheetName(0, "表1");// 设置sheet的名称
xls.setString(0,0,"[1,1]");// 设置表格值
FileOutputStream out=new FileOutputStream("my.xls");
xls.writeTo(out);// 写出文件
out.close();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式