jxl导出excel后,矩形框丢失 我使用jxl向一个excel的其中一个sheet中写入数据,然后下载到本地,打开后,发现其他sheet中的矩形框都丢失了。请问该处理解决?谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com.along;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;public class ExportExcel { public static void main(String args[]) { ExportExcel excel = new ExportExcel(); // excel的第一行标题 String[] title = { "编号", "姓名", "班级", "老师", "生日", "籍贯" }; List list = new ArrayList(); // 要导出的数据 list.add(new Object[] { "s1", "s2", "s3", "s4", "s5", "s6" }); list.add(new Object[] { 1, 2, 3, 4, 5, 6 }); list.add(new Object[] { 0.02, 2, 3, 4, 5, 6 }); list.add(new Object[] { new Date(), 2, 3, 4, 5, 6 }); list.add(new Object[] { "05001", "李四", "一班", "张老师", "1983-11-07", "北京" }); excel.export("D:\\exportExcel.xls", list, title); } // 导出excel的方法,filepath为要导出的文件的完整地址,list为要导出的数据,title为要导出的数据的标题 public boolean export(String filepath, List list, String[] title) { OutputStream os = null; try { os = new FileOutputStream(filepath); HashMap map = null; // 创建工作薄 WritableWorkbook workbook = Workbook.createWorkbook(os); // 创建第一个工作表,name:工作表名称 WritableSheet worksheet = workbook.createSheet("record", 0); // 开始写入第一行,即标题栏 for (int i = 0; i < title.length; i++) { //用于写入文本内容到工作表中去 Label label = null; //参数依次代表列数、行数、内容 label = new Label(i, 0, title[i]); worksheet.addCell(label);// 写入单元格 } // 开始写入内容 for (int i = 0; i < list.size(); i++) { // 获取一条记录 Object[] row_data = (Object[]) list.get(i); // 数据是文本时是用label写入,于写入文本内容到工作表中去 for (int j = 0; j < row_data.length; j++) { Object item_data = row_data[j]; writeCell(worksheet, item_data, j, i + 1); } } workbook.write(); workbook.close(); } catch (Exception e) { e.printStackTrace(); return false ; } finally { try { if (os != null) os.close(); } catch (IOException e) { e.printStackTrace(); } } return true; } //写每一个单元格,处理不同的数据格式。 private void writeCell(WritableSheet sheet, Object cellValue, int column, int row) throws RowsExceededException, WriteException { if (cellValue instanceof String) { jxl.write.Label label; label = new jxl.write.Label(column, row, (String) cellValue); sheet.addCell(label); } else if (cellValue instanceof Number) {// 如果是数字 if (cellValue instanceof Integer) { // 添加带有formatting的Number对象 jxl.write.Number labelNF = new jxl.write.Number(column, row, (Integer) cellValue); sheet.addCell(labelNF); } else if (cellValue instanceof Short) { jxl.write.Number labelNF = new jxl.write.Number(column, row, (Short) cellValue); sheet.addCell(labelNF); } else if (cellValue instanceof Double) { // 添加带有formatting的Number对象 jxl.write.NumberFormat nf = new jxl.write.NumberFormat("0.00"); ; jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat( nf); jxl.write.Number labelNF = new jxl.write.Number(column, row, (Double) cellValue, wcfN); sheet.addCell(labelNF); } else if (cellValue instanceof Long) { jxl.write.Number labelNF = new jxl.write.Number(column, row, (Long) cellValue); sheet.addCell(labelNF); } } else if (cellValue instanceof Date) { // 添加带有formatting的DateFormat对象 jxl.write.DateFormat df = new jxl.write.DateFormat( "yyyy-MM-dd hh:mm:ss"); jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat( df); jxl.write.DateTime labelDTF = new jxl.write.DateTime(column, row, (Date) cellValue, wcfDF); sheet.addCell(labelDTF); } else if (cellValue instanceof Boolean) { jxl.write.Boolean labelB = new jxl.write.Boolean(column, row, false); sheet.addCell(labelB); } }} exportexcel.jsp<%@ page language="java" contentType="text/html; charset=gb2312"%><%@page import="java.util.*"%><% String filepath = request.getParameter("filepath"); com.along.ExportExcel excel= new com.along.ExportExcel(); // excel的第一行标题 String[] title = { "编号", "姓名", "班级", "老师", "生日", "籍贯" }; List list = new ArrayList(); // 要导出的数据 list.add(new Object[] { "s1", "s2", "s3", "s4", "s5", "s6" }); list.add(new Object[] { 1, 2, 3, 4, 5, 6 }); list.add(new Object[] { 0.02, 2, 3, 4, 5, 6 }); list.add(new Object[] { new Date(), 2, 3, 4, 5, 6 }); list.add(new Object[] { "05001", "李四", "一班", "张老师", "1983-11-07", "北京" }); boolean flag=excel.export(filepath,list,title);%><script type="text/javascript"> var flag=<%=flag%>; if(flag==true){ alert("文件生成成功!"); }else{ alert("文件生成失败!"); }</script> downloadfile.jsp<%@ page language="java" contentType="text/html; charset=gb2312"%><%@page import="java.util.*"%><%@page import="java.io.*"%><%@page import="java.net.*"%><% //下载时保存的文件名称 String filename = request.getParameter("filename"); //要下载的文件的完整路径 String filepath = request.getParameter("filepath"); System.out.println("filename=" + filename); System.out.println("filepath=" + filepath); //response.setHeader("Cache-Control", "max-age=" + no-cache); response.reset(); response.setContentType("application/x-download");//设置为下载application/x-download response.setHeader("Content-Disposition", "attachment;filename=" + filename); response.setHeader("Pragma", "No-cache"); //filename应该是编码后的(utf-8) try { File file = new File(filepath); long filelength = file.length(); System.out.println("filelength=" + filelength); response.setContentLength(new Integer(filelength + "") .intValue()); OutputStream outputStream = response.getOutputStream(); InputStream inputStream = new FileInputStream(filepath); byte[] buffer = new byte[1024 * 1024]; int i = -1; int sum = 0; while ((i = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, i); sum = sum + i; } outputStream.flush(); outputStream.close(); inputStream.close(); out.clear(); out=pageContext.pushBody(); } catch (Exception e) { e.printStackTrace(); } finally { }%> 模板要填充的格式:format = sheet.getCell(2, 2).getCellFormat();填充内容并设置格式:sheet.addCell(new Label(2, 2, "测试",format)); 边框丢失是因为你没给单元格指定格式!noteFormat.setBorder(Border.ALL, BorderLineStyle.THIN);可以参考我刚写的一篇博文,上面写的很清楚:http://blog.csdn.net/monitor1394/archive/2010/12/22/6091272.aspx 怎么限制JTextarea的字数 关于split的! 这样定义按钮数组有问题么? 制作报表生成合计行的问题。 怎么显示 请问在生产者消费者中的一个统一编号的问题。 急寻程序,帮帮忙 求一个算法 时间问题! mysql 语句 50分 密码的文本框实现失去焦点时实现密码校对检验 怎么实现?? java编程思想中的一个if-else程序片段,怎么完成?
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;public class ExportExcel {
public static void main(String args[]) {
ExportExcel excel = new ExportExcel();
// excel的第一行标题
String[] title = { "编号", "姓名", "班级", "老师", "生日", "籍贯" };
List list = new ArrayList();
// 要导出的数据
list.add(new Object[] { "s1", "s2", "s3", "s4", "s5", "s6" });
list.add(new Object[] { 1, 2, 3, 4, 5, 6 });
list.add(new Object[] { 0.02, 2, 3, 4, 5, 6 });
list.add(new Object[] { new Date(), 2, 3, 4, 5, 6 });
list.add(new Object[] { "05001", "李四", "一班", "张老师", "1983-11-07",
"北京" });
excel.export("D:\\exportExcel.xls", list, title);
} // 导出excel的方法,filepath为要导出的文件的完整地址,list为要导出的数据,title为要导出的数据的标题
public boolean export(String filepath, List list, String[] title) { OutputStream os = null;
try {
os = new FileOutputStream(filepath);
HashMap map = null;
// 创建工作薄
WritableWorkbook workbook = Workbook.createWorkbook(os);
// 创建第一个工作表,name:工作表名称
WritableSheet worksheet = workbook.createSheet("record", 0);
// 开始写入第一行,即标题栏
for (int i = 0; i < title.length; i++) {
//用于写入文本内容到工作表中去
Label label = null;
//参数依次代表列数、行数、内容
label = new Label(i, 0, title[i]);
worksheet.addCell(label);// 写入单元格
}
// 开始写入内容
for (int i = 0; i < list.size(); i++) {
// 获取一条记录
Object[] row_data = (Object[]) list.get(i);
// 数据是文本时是用label写入,于写入文本内容到工作表中去
for (int j = 0; j < row_data.length; j++) {
Object item_data = row_data[j];
writeCell(worksheet, item_data, j, i + 1);
}
}
workbook.write();
workbook.close(); } catch (Exception e) {
e.printStackTrace();
return false ;
} finally {
try {
if (os != null)
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
//写每一个单元格,处理不同的数据格式。
private void writeCell(WritableSheet sheet, Object cellValue, int column,
int row) throws RowsExceededException, WriteException {
if (cellValue instanceof String) {
jxl.write.Label label;
label = new jxl.write.Label(column, row, (String) cellValue);
sheet.addCell(label);
} else if (cellValue instanceof Number) {// 如果是数字 if (cellValue instanceof Integer) {
// 添加带有formatting的Number对象
jxl.write.Number labelNF = new jxl.write.Number(column, row,
(Integer) cellValue);
sheet.addCell(labelNF);
} else if (cellValue instanceof Short) {
jxl.write.Number labelNF = new jxl.write.Number(column, row,
(Short) cellValue);
sheet.addCell(labelNF);
} else if (cellValue instanceof Double) {
// 添加带有formatting的Number对象
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("0.00");
;
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(
nf);
jxl.write.Number labelNF = new jxl.write.Number(column, row,
(Double) cellValue, wcfN);
sheet.addCell(labelNF);
} else if (cellValue instanceof Long) {
jxl.write.Number labelNF = new jxl.write.Number(column, row,
(Long) cellValue);
sheet.addCell(labelNF);
}
} else if (cellValue instanceof Date) {
// 添加带有formatting的DateFormat对象
jxl.write.DateFormat df = new jxl.write.DateFormat(
"yyyy-MM-dd hh:mm:ss");
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(
df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(column, row,
(Date) cellValue, wcfDF); sheet.addCell(labelDTF); } else if (cellValue instanceof Boolean) {
jxl.write.Boolean labelB = new jxl.write.Boolean(column, row, false);
sheet.addCell(labelB);
}
}
}
<%@page import="java.util.*"%>
<%
String filepath = request.getParameter("filepath");
com.along.ExportExcel excel= new com.along.ExportExcel();
// excel的第一行标题
String[] title = { "编号", "姓名", "班级", "老师", "生日", "籍贯" };
List list = new ArrayList();
// 要导出的数据
list.add(new Object[] { "s1", "s2", "s3", "s4", "s5", "s6" });
list.add(new Object[] { 1, 2, 3, 4, 5, 6 });
list.add(new Object[] { 0.02, 2, 3, 4, 5, 6 });
list.add(new Object[] { new Date(), 2, 3, 4, 5, 6 });
list.add(new Object[] { "05001", "李四", "一班", "张老师", "1983-11-07",
"北京" });
boolean flag=excel.export(filepath,list,title);%>
<script type="text/javascript">
var flag=<%=flag%>;
if(flag==true){
alert("文件生成成功!");
}else{
alert("文件生成失败!");
}</script>
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%
//下载时保存的文件名称
String filename = request.getParameter("filename");
//要下载的文件的完整路径
String filepath = request.getParameter("filepath");
System.out.println("filename=" + filename);
System.out.println("filepath=" + filepath);
//response.setHeader("Cache-Control", "max-age=" + no-cache);
response.reset();
response.setContentType("application/x-download");//设置为下载application/x-download
response.setHeader("Content-Disposition", "attachment;filename="
+ filename);
response.setHeader("Pragma", "No-cache");
//filename应该是编码后的(utf-8)
try {
File file = new File(filepath);
long filelength = file.length();
System.out.println("filelength=" + filelength);
response.setContentLength(new Integer(filelength + "")
.intValue()); OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(filepath); byte[] buffer = new byte[1024 * 1024];
int i = -1;
int sum = 0;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
sum = sum + i;
}
outputStream.flush();
outputStream.close();
inputStream.close();
out.clear();
out=pageContext.pushBody();
} catch (Exception e) {
e.printStackTrace();
} finally { }
%>
填充内容并设置格式:sheet.addCell(new Label(2, 2, "测试",format));
noteFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
可以参考我刚写的一篇博文,上面写的很清楚:http://blog.csdn.net/monitor1394/archive/2010/12/22/6091272.aspx