中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現JSF下的生成EXCEL

發布時間:2021-12-01 09:29:53 來源:億速云 閱讀:138 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關如何實現JSF下的生成EXCEL的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Excel這個大家幾乎每天都用到的工具,為我們的工作帶來了極大的方便。在現在的B/S系統中,特別是很多大型的辦公系統中,大量的報表需要處理,導出EXCEL的功能就顯得尤為重要了。導出Excel已經是相當成熟的技術了,但是在java中卻不是一件容易的事。特別是在JSF架構的系統中,由于使用的人數和學習的資料都很少,實現導出Excel的功能也頗費周折。由于項目的需要,本人需要實現這樣的功能,經過對大量代碼的改造,實現了JSF下的生成EXCEL并在客戶端實現下載的功能。下面的例子中,我用的是POI來生成Excel。Apache的Jakata項目的POI子項目,目標是處理ole2對象。 POI可以到http://www.apache.org/dyn/closer.cgi/jakarta/poi/下載。 編譯好的jar主要有這樣4個:poi包,poi Browser包,poi hdf包,poi hssf例程包。實際運行時,需要有poi包就可以了。

在下面的工具類中,我通過private static void downloadFile(String strfileName) 這個方法在生成EXCEL以后實現在客戶端的下載。在這個類中,這個方法就是經過改造的JSF實現。不過這個工具類有個不足之處就是,傳遞給 downloadFile(String strfileName) 的文件名不支持中文,希望大家注意,也希望各位能給出解決辦法。

   package mj.util.excel;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.io.IOException;  import java.util.List;  import javax.faces.context.FacesContext;  import javax.servlet.ServletContext;  import javax.servlet.ServletOutputStream;  import javax.servlet.http.HttpServletResponse;  import org.apache.poi.hssf.usermodel.HSSFCell;  import org.apache.poi.hssf.usermodel.HSSFCellStyle;  import org.apache.poi.hssf.usermodel.HSSFFont;  import org.apache.poi.hssf.usermodel.HSSFRow;  import org.apache.poi.hssf.usermodel.HSSFSheet;  import org.apache.poi.hssf.usermodel.HSSFWorkbook;  /**  * 本工具類解決了java到處Excel,并同時實現了客戶端下載 不足之處:下載方法傳入的文件名不支持中文  *  * @author yongtree  *  */  public class ExcelUtils {  private static String sheetName = "data";  private HSSFWorkbook wb;  private HSSFSheet sheet;  private HSSFRow row;  private HSSFCell cell;  private HSSFFont font;  private HSSFCellStyle cellStyle;  private FileOutputStream fileOut;  public ExcelUtils() {  wb = new HSSFWorkbook();  }  /**  * @param excelName  * excel名稱。  * @param list  * 這個list里面存放的是對象數組。數組元素可以轉化為字符串顯示的。這個對象數組一般對應數據庫里的幾列。  * @param firstRowValue  */  public void outputExcel(String excelName, List list, String[] firstRowValue) {  try {  this.createSheet(firstRowValue);  this.setValueToRow(excelName, list);  } catch (Exception ex) {  System.out.print(ex);  }  // System.out.println("文件名是:" + excelName);  downloadFile(excelName);  }  public void outputExcel(String excelName, List list) {  try {  this.setValueToRow(excelName, list);  } catch (Exception e) {  // TODO: handle exception  }  downloadFile(excelName);  }  private void setValueToRow(String excelName, List list) {  // 獲得JSF上下文環境  FacesContext context = FacesContext.getCurrentInstance();  // 獲得ServletContext對象  ServletContext servletContext = (ServletContext) context  .getExternalContext().getContext();  // 取得文件的絕對路徑  excelName = servletContext.getRealPath("/UploadFile") + "/" + excelName;  System.out.println("生成文件的路徑是:" + excelName);  Object[] obj;  try {  for (int i = 0; i < list.size(); i++) {  row = sheet.createRow(i + 1);  obj = (Object[]) list.get(i);  this.createCell(row, obj);  }  fileOut = new FileOutputStream(excelName);  wb.write(fileOut);  } catch (Exception ex) {  System.out.print("生成報表有誤:" + ex);  } finally {  try {  fileOut.flush();  fileOut.close();  } catch (Exception e) {  System.out.println("ExcelUtil.setValueToRow()");  }  }  }  private void createSheet(String[] firstRowValue) {  try {  sheet = wb.createSheet(ExcelUtils.sheetName);  row = sheet.createRow(0);  font = wb.createFont();  font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  cellStyle = wb.createCellStyle();  cellStyle.setFont(font);  for (int i = 0; i < firstRowValue.length; i++) {  cell = row.createCell((short) i);  cell.setCellStyle(cellStyle);  cell.setEncoding(HSSFCell.ENCODING_UTF_16);  cell.setCellValue(firstRowValue[i]);  }  } catch (Exception ex) {  System.out.print(ex);  }  }  private void createCell(HSSFRow row, Object[] obj) {  try {  for (int i = 0; i < obj.length; i++) {  cell = row.createCell((short) i);  cell.setEncoding(HSSFCell.ENCODING_UTF_16);  cell.setCellValue(obj[i].toString());  }  } catch (Exception ex) {  System.out.print(ex);  }  }  /**  *   * 功能說明:根據提供的文件名下載文件,不支持中文文件名  *   * 此方法由yongtree添加,實現文件生成后的下載  *  * @param strfileName  * String  * @return void  */  private static void downloadFile(String strfileName) {  try {  // 獲得JSF上下文環境  FacesContext context = FacesContext.getCurrentInstance();  // 獲得ServletContext對象  ServletContext servletContext = (ServletContext) context  .getExternalContext().getContext();  // 取得文件的絕對路徑  String excelName = servletContext.getRealPath("/UploadFile") + "/"  + strfileName;  File exportFile = new File(excelName);  HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext  .getCurrentInstance().getExternalContext().getResponse();  ServletOutputStream servletOutputStream = httpServletResponse .getOutputStream();  httpServletResponse.setHeader("Content-disposition",  "attachment; filename=" + strfileName);  httpServletResponse.setContentLength((int) exportFile.length());  httpServletResponse.setContentType("application/x-download");  // httpServletResponse.setContentType("application/vnd.ms-excel");  byte[] b = new byte[1024];  int i = 0;  FileInputStream fis = new java.io.FileInputStream(exportFile);  while ((i = fis.read(b)) > 0) {  servletOutputStream.write(b, 0, i);  }  } catch (IOException e) {  e.printStackTrace();  }  FacesContext.getCurrentInstance().responseComplete();  }  }

感謝各位的閱讀!關于“如何實現JSF下的生成EXCEL”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

迭部县| 临桂县| 西吉县| 杨浦区| 唐海县| 丰原市| 鸡泽县| 香格里拉县| 建平县| 财经| 普格县| 炉霍县| 汝州市| 财经| 柘荣县| 金堂县| 积石山| 开原市| 延津县| 乌海市| 衡水市| 当阳市| 青神县| 琼海市| 盐源县| 堆龙德庆县| 漳州市| 黑水县| 扶沟县| 承德县| 偏关县| 得荣县| 六安市| 兰考县| 九龙县| 沙洋县| 阳原县| 南澳县| 旬邑县| 磐安县| 新安县|