當前位置:編程學習大全網 - 源碼下載 - 如何用java向指定的EXCEL單元格中寫入數據?

如何用java向指定的EXCEL單元格中寫入數據?

我們項目裏用的 供妳參考,沒寫全,妳可以自己百度下

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableImage;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import jxl.write.biff.RowsExceededException;

/**

* 導出excel

* @param reportParams 導出excel列名標示

* @param list導出excel值

* @param headersexcel頭

* @param reportName·excel的sheet名

* @param response

* @param startRow從哪壹行開始放list值

* @param startCol 從哪壹列開始放list值

* @return

*/

public boolean report(ReportBean rb, List list, XlsHeaderBean[] headers, String reportName, HttpServletResponse response, int startRow, int startCol, HttpServletRequest request){

WritableWorkbook wwb = null;

OutputStream os;

boolean flag = true;

Date date = new Date();

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");

String strDate = format.format(date);

try {

// 用Workbook類的工廠方法創建工作薄(Workbook)對象

response.setContentType("application/x-msdownload");

String sheetName = "report";

sheetName = sheetName.replaceAll(":", "").replaceAll("[)]", "")

.replaceAll("[(]", "");

// 這裏解釋壹下

// attachment; 這個代表要下載的,如果去掉就編程直接打開了

// filename是文件名,另存為或者下載時,為默認的文件名

response.addHeader("Content-Disposition", "attachment; filename="

+ new String(sheetName.getBytes("UTF-8"), "ISO-8859-1")+ strDate

+ ".xls");

os = response.getOutputStream();

wwb = Workbook.createWorkbook(os);

} catch (IOException e) {

e.printStackTrace();

return flag = false;

}

if (wwb != null) {

// 創建壹個可寫入的工作表

// Workbook的createSheet方法兩個參數,1名稱,2位置

WritableSheet ws = wwb.createSheet(reportName, 0);

// 下面開始添加單元格

// 導出excel

try {

Label labelC = null;

for(int j = 0; j < headers.length; j++){

if(headers[j].isUnion()){

ws.mergeCells(headers[j].getCol(), headers[j].getRow(), headers[j].getCol()+headers[j].getColLength(), headers[j].getRow()+headers[j].getRowLength());

}

labelC = new Label(headers[j].getCol(), headers[j].getRow(), headers[j].getValue());

ws.addCell(labelC);

}

} catch (RowsExceededException e) {

e.printStackTrace();

} catch (WriteException e) {

e.printStackTrace();

}

String value = null;

for (int i = 0; i < list.size(); i++) {

Map values = (Map)list.get(i);

for (int j = 0; j < rb.getReportParams().length; j++) {

// 這裏需要註意的是,在Excel中,第壹個參數表示列,第二個表示行

Label labelC;

if(values.get(rb.getReportParams()[j]) == null){

value = "";

} else {

if(values.get(rb.getReportParams()[j]) instanceof java.util.Date){

value = format.format(values.get(rb.getReportParams()[j]));

} else if(values.get(rb.getReportParams()[j]) instanceof java.math.BigDecimal){

value = values.get(rb.getReportParams()[j]).toString();

} else {

value = values.get(rb.getReportParams()[j]).toString();

}

}

labelC = new Label(j+startCol, i + startRow, value);

try {

// 將生成的單元格添加到工作表中

ws.addCell(labelC);

} catch (RowsExceededException e) {

e.printStackTrace();

return flag = false;

} catch (WriteException e) {

e.printStackTrace();

return flag = false;

}

}

}

if(rb.isHasImg()){

String rootPath = this.getServletContext().getRealPath("savefiles");

String imgPath = rb.getImgPath();

if(rootPath != null && rootPath.compareTo("") != 0 && imgPath != null && imgPath.compareTo("") !=0){

String[] strs = imgPath.split("\\/");

String imgName = strs[strs.length-1];

File file = new File(rootPath + File.separator + imgName);

if(file.exists()){

WritableImage wi = new WritableImage(0, startRow + list.size() + 2,12,20, file);

ws.addImage(wi);

}

}

}

try {

// 從內存中寫入文件中

wwb.write();

wwb.close();

return flag;

} catch (IOException e) {

e.printStackTrace();

return flag = false;

} catch (WriteException e) {

e.printStackTrace();

return flag = false;

}

}

return flag;

}

  • 上一篇:急,十萬火急!如何用asp 做留言板的添加留言?和刪除留言?要源代碼
  • 下一篇:Vc新聞源代碼
  • copyright 2024編程學習大全網