关于jxl的问题 WritableWorkbook中write方法可以用来对xls文件写操作但只能写一次,下面的写操作好像无效了有什么方法可以实现来一次数据写一次,从而实现动态写操作?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是否write方法中的对象传递了错误的引用 public class ExcelUtil { public WritableSheet createWritableSheet(String sheetname) throws IOException { if (null==writableWorkbook){ writableWorkbook = Workbook.createWorkbook(new File(filename)); } WritableSheet sheet = writableWorkbook.getSheet(sheetname); if (null!=sheet){ throw new IOException(sheetname + " exists in " + filename); } sheet = writableWorkbook.createSheet(sheetname, 0); return sheet; } public int writeHeader2sheet(WritableSheet sheet, List<String> headerData) throws WriteException,IOException { int count = 0; List<String> data = headerData; for (int j = 0; j < data.size(); j++) { //format jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(); wcf.setWrap(true); wcf.setAlignment(jxl.format.Alignment.CENTRE); wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, true); wcf.setFont(wf); //Label(列号,行号 ,内容 ) jxl.write.Label colData = new jxl.write.Label(j, 0,data.get(j),wcf); sheet.addCell(colData); } count++; rowCount = rowCount + count; return count; } public int writeData2sheet(WritableSheet sheet, int start, List<List<String>> rowData) throws WriteException,IOException { int count = 0; for (int i = 0; i < rowData.size(); i++) { List<String> data = rowData.get(i); //row height sheet.setRowView(rowCount+i, 500*4); for (int j = 0; j < data.size(); j++) { //format jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(); wcf.setWrap(true); wcf.setAlignment(jxl.format.Alignment.LEFT); wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //column width sheet.setColumnView(j, j==0?10:50); //Label(列号,行号 ,内容 ) jxl.write.Label colData = new jxl.write.Label(j, rowCount + start + i,data.get(j),wcf); sheet.addCell(colData); } count++; } rowCount = rowCount + count; return count; } public void close() throws IOException,WriteException { if (null!=writableWorkbook){ writableWorkbook.write(); writableWorkbook.close(); writableWorkbook = null; } } public int writeData2sheet(WritableSheet sheet, List<List<String>> rowData) throws Exception { return writeData2sheet(sheet, 0, rowData); } public void write() throws IOException,WriteException{ if (null!=writableWorkbook){ writableWorkbook.write(); } } public static void main(String[] args) { try { List<List<String>> allData = new ArrayList<List<String>>(); List<String> data = new ArrayList<String>(); int start = (int)System.currentTimeMillis()&0xffff; for (int i = start; i < start+10; i++) { data.add(String.valueOf(i)); } allData.add(data); ExcelUtil excelUtil = new ExcelUtil("test.xls"); WritableSheet writableSheet = excelUtil.createWritableSheet(TextFormat.getDateTime(TextFormat.YYYYMMDD+TextFormat.HHMMSS)); int count = excelUtil.writeHeader2sheet(writableSheet, data); excelUtil.write();//这个能正常写入 count = excelUtil.writeData2sheet(writableSheet, allData); excelUtil.write();//这个不能正常写入 } catch (Exception e) { e.printStackTrace(); } }} 每次写入 都new一次 应该没问题WritableWorkbook workBook = Workbook.createWorkbook(new File(file)); java里怎么取变量地址? ThreadLocal 主线程获取值问题 求大神帮助,谢谢了 面试的一道算法题 java读取mysql数据库乱码的问题 Eclipse+DB2求助:无效的游标状态 SQLSTATE=24000 问一个关于JTable的问题,急,急,急,请教高手,跑求了.... 为什么不显示Hello! 救命啊!中文乱码,jdk13和jdk14不一样 高手请帮忙!!很急的! awt中文字处理的问题 Java如何使用系统虚拟内存
if (null==writableWorkbook){
writableWorkbook = Workbook.createWorkbook(new File(filename));
} WritableSheet sheet = writableWorkbook.getSheet(sheetname);
if (null!=sheet){
throw new IOException(sheetname + " exists in " + filename);
}
sheet = writableWorkbook.createSheet(sheetname, 0); return sheet;
}
public int writeHeader2sheet(WritableSheet sheet, List<String> headerData)
throws WriteException,IOException {
int count = 0; List<String> data = headerData; for (int j = 0; j < data.size(); j++) {
//format
jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat();
wcf.setWrap(true);
wcf.setAlignment(jxl.format.Alignment.CENTRE);
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES,
10, WritableFont.BOLD, true);
wcf.setFont(wf); //Label(列号,行号 ,内容 )
jxl.write.Label colData = new jxl.write.Label(j, 0,data.get(j),wcf);
sheet.addCell(colData);
} count++; rowCount = rowCount + count; return count;
}
public int writeData2sheet(WritableSheet sheet, int start, List<List<String>> rowData)
throws WriteException,IOException {
int count = 0; for (int i = 0; i < rowData.size(); i++) {
List<String> data = rowData.get(i); //row height
sheet.setRowView(rowCount+i, 500*4); for (int j = 0; j < data.size(); j++) {
//format
jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat();
wcf.setWrap(true);
wcf.setAlignment(jxl.format.Alignment.LEFT);
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //column width
sheet.setColumnView(j, j==0?10:50); //Label(列号,行号 ,内容 )
jxl.write.Label colData = new jxl.write.Label(j, rowCount + start + i,data.get(j),wcf);
sheet.addCell(colData);
} count++;
} rowCount = rowCount + count; return count;
} public void close() throws IOException,WriteException {
if (null!=writableWorkbook){
writableWorkbook.write();
writableWorkbook.close();
writableWorkbook = null;
}
} public int writeData2sheet(WritableSheet sheet, List<List<String>> rowData)
throws Exception {
return writeData2sheet(sheet, 0, rowData);
}
public void write() throws IOException,WriteException{
if (null!=writableWorkbook){
writableWorkbook.write(); }
} public static void main(String[] args) {
try {
List<List<String>> allData = new ArrayList<List<String>>();
List<String> data = new ArrayList<String>();
int start = (int)System.currentTimeMillis()&0xffff;
for (int i = start; i < start+10; i++) {
data.add(String.valueOf(i));
}
allData.add(data); ExcelUtil excelUtil = new ExcelUtil("test.xls");
WritableSheet writableSheet = excelUtil.createWritableSheet(TextFormat.getDateTime(TextFormat.YYYYMMDD+TextFormat.HHMMSS)); int count = excelUtil.writeHeader2sheet(writableSheet, data);
excelUtil.write();//这个能正常写入 count = excelUtil.writeData2sheet(writableSheet, allData);
excelUtil.write();//这个不能正常写入 } catch (Exception e) {
e.printStackTrace();
}
}}
WritableWorkbook workBook = Workbook.createWorkbook(new File(file));