国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

jxl 導出數據到excel的實例講解

2024-07-13 10:14:31
字體:
來源:轉載
供稿:網友

優點:

Jxl對中文支持非常好,操作簡單,方法看名知意。

Jxl是純javaAPI,在跨平臺上表現的非常完美,代碼可以再windows或者Linux上運行而無需重新編寫

支持Excel 95-2000的所有版本(網上說目前可以支持Excel2007了,還沒有嘗試過)

生成Excel 2000標準格式

支持字體、數字、日期操作

能夠修飾單元格屬性

支持圖像和圖表,但是這套API對圖形和圖表的支持很有限,而且僅僅識別PNG格式。

缺點:

效率低,圖片支持不完善,對格式的支持不如POI強大

案例:

String times = (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date());String fname = "系統日志" + times; // 文件名List<Logs> list=logsService.selectForList(hql.toString());  String path = request.getSession().getServletContext().getRealPath("/")    + "xls/"    + (new SimpleDateFormat("yyyyMMdd")).format(new Date());  File file = new File(path);  // 如果文件夾不存在則創建  if (!file.exists() && !file.isDirectory()) {   file.mkdir();  }  response.setContentType("application/vnd.ms-excel;charset=utf-8");// // 指定文件的保存類型。  response.setCharacterEncoding("utf-8");  ExportUtil.writer_log(request,fname, list, response);//下載到本地

writer_log導出方法如下

/**  * 生成 excel 文件,導出到本地電腦  * @param fname 文件名  * @param list 需要打印的數據,即數據庫查詢的數據列表  */ public static void writer_log(HttpServletRequest request,String fname, List list, HttpServletResponse response) {  try {   OutputStream os = response.getOutputStream();//取得輸出流   response.reset();//清空輸出流   // 下面是對中文文件名的處理 開始   response.setCharacterEncoding("UTF-8");//設置相應內容的編碼格式   if(isMsBrowser(request))    fname= java.net.URLEncoder.encode(fname ,"UTF-8");    else fname = new String(fname.getBytes("UTF-8"),"ISO-8859-1");   response.setHeader("Content-Disposition","attachment;filename="+fname+".xls");   response.setContentType("application/msexcel;charset=utf-8");//定義輸出類型   // 對中文文件名的處理 結束      // 此處的 Workbook 導入的是 import jxl.Workbook;   WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件   WritableSheet sheet = wbook.createSheet("系統日志", 0); // 工作表名稱      CellView cellView = new CellView();    cellView.setAutosize(true); //設置自動大小   sheet.setColumnView(0, 8); //設置單元格寬度,0是列號,8是寬度   sheet.setColumnView(1, 20); //設置單元格寬度,1是列號,20是寬度   sheet.setColumnView(2, 24);   sheet.setColumnView(3, 20);   sheet.setColumnView(4, 30);   sheet.setColumnView(5, 13);   sheet.setColumnView(6, 15);   sheet.setColumnView(7, 32);   sheet.setColumnView(8, 15);         // 設置Excel字體   WritableFont wfont = new WritableFont(WritableFont.createFont("宋體"), 22,     WritableFont.BOLD, false,     jxl.format.UnderlineStyle.NO_UNDERLINE,     jxl.format.Colour.BLACK);        //設置單元格字體樣式   WritableCellFormat titleFormat = new WritableCellFormat(wfont); //添加單元格字體   titleFormat.setAlignment(Alignment.CENTRE);      //設置文字居中對齊方式;    String[]   // 設置Excel表頭 開始   for (int i = 0; i < title.length; i++) {    // 此處導入的是 import jxl.write.Label;    Label excelTitle = new Label(i, 0, title[i], titleFormat); //單元格內容    // 參數順序:開始列,開始行,結束列,結束行    sheet.mergeCells(0, 0, 8, 0);        //所在位置,第幾行第幾列    sheet.addCell(excelTitle);         //添加單元格信息   }   // 設置Excel表頭 結束   // 第一行,即顯示時間,參數:(所在列,所在行,內容)   WritableFont wfonttime = new WritableFont(WritableFont.createFont("宋體"), 11,     WritableFont.NO_BOLD, false,     jxl.format.UnderlineStyle.NO_UNDERLINE,     jxl.format.Colour.BLACK);        //設置單元格字體樣式   WritableCellFormat titletime = new WritableCellFormat(wfonttime);//添加單元格字體   titletime.setAlignment(Alignment.RIGHT);      //設置文字居中對齊方式;    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");//   sheet.setColumnView(1, cellView);        //根據內容自動設置列寬    Label contentDate = new Label(0, 1, df.format(new Date()), titletime); //單元格內容//   sheet.mergeCells(16, 1, 18, 1);     //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫   sheet.addCell(contentDate);      //添加單元格信息   // 第一行 結束   // 第二行,顯示條件標題欄   WritableFont wfont2 = new WritableFont(WritableFont.createFont("宋體"), 11,     WritableFont.BOLD, false,     jxl.format.UnderlineStyle.NO_UNDERLINE,     jxl.format.Colour.BLACK);        //設置單元格字體樣式   WritableCellFormat titleFormat2 = new WritableCellFormat(wfont2);//添加單元格字體   titleFormat2.setBorder(Border.ALL, BorderLineStyle.THIN);   //設置邊框--實線;    titleFormat2.setAlignment(Alignment.CENTRE);      //設置文字居中對齊方式;    titleFormat2.setVerticalAlignment(VerticalAlignment.CENTRE);  //設置垂直居中;    Label content2a = new Label(0, 2, "序號", titleFormat2);   //單元格內容--第1格   Label content2b = new Label(1, 2, "用戶名", titleFormat2);  //單元格內容--第2格   Label content2c = new Label(2, 2, "記錄時間", titleFormat2);  //單元格內容--第3格   Label content2d = new Label(3, 2, "操作模塊", titleFormat2);   //單元格內容--第4格   Label content2e = new Label(4, 2, "操作內容", titleFormat2);  //單元格內容--第5格   Label content2f = new Label(5, 2, "操作動作", titleFormat2);   //單元格內容--第6格   Label content2g = new Label(6, 2, "操作人IP", titleFormat2);   //單元格內容--第7格   Label content2h = new Label(7, 2, "所屬組織", titleFormat2);   //單元格內容--第8格   Label content2i = new Label(8, 2, "備注", titleFormat2);  //單元格內容--第9格   sheet.mergeCells(0, 1, 8, 1);   /*sheet.mergeCells(0, 2, 0, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第1列)   sheet.mergeCells(1, 2, 1, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第2列)   sheet.mergeCells(2, 2, 2, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第3列)   sheet.mergeCells(3, 2, 3, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第4列)   sheet.mergeCells(4, 2, 4, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第5列)   sheet.mergeCells(5, 2, 5, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第6列)   sheet.mergeCells(6, 2, 6, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第7列)   sheet.mergeCells(7, 2, 7, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第8列)   sheet.mergeCells(8, 2, 8, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第9列)   sheet.mergeCells(9, 2, 9, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第10列)   sheet.mergeCells(10, 2, 12, 3);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到4行,第11-13列)   sheet.mergeCells(13, 2, 15, 3);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到4行,第14-16列)   sheet.mergeCells(16, 2, 16, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第17列)   sheet.mergeCells(17, 2, 17, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第18列)   sheet.mergeCells(18, 2, 18, 4);  //所在位置,第幾行第幾列,即合并的位置,如沒合并,可不寫;(此處為第3行開始到5行,第19列)*/   sheet.addCell(content2a);   //添加第1格單元格信息   sheet.addCell(content2b);   //添加第2格單元格信息   sheet.addCell(content2c);   //添加第3格單元格信息   sheet.addCell(content2d);   //添加第4格單元格信息   sheet.addCell(content2e);   //添加第5格單元格信息   sheet.addCell(content2f);   //添加第6格單元格信息   sheet.addCell(content2g);   //添加第7格單元格信息   sheet.addCell(content2h);   //添加第8格單元格信息   sheet.addCell(content2i);   //添加第9格單元格信息   WritableFont wf = new WritableFont(WritableFont.createFont("宋體"), 11,     WritableFont.NO_BOLD, false,     jxl.format.UnderlineStyle.NO_UNDERLINE,     jxl.format.Colour.BLACK);      //設置單元格字體樣式   WritableCellFormat wcf = new WritableCellFormat(wf); //添加單元格字體   wcf.setBorder(Border.ALL, BorderLineStyle.THIN);   //設置邊框--實線;    wcf.setVerticalAlignment(VerticalAlignment.CENTRE);  //設置垂直對齊   wcf.setAlignment(Alignment.CENTRE);      //設置文字水平居中對齊方式;   wcf.setWrap(true);          //自動換行      WritableFont wf1 = new WritableFont(WritableFont.createFont("宋體"), 11,     WritableFont.NO_BOLD, false,     jxl.format.UnderlineStyle.NO_UNDERLINE,     jxl.format.Colour.BLACK);      //設置單元格字體樣式   WritableCellFormat wcf1 = new WritableCellFormat(wf1); //添加單元格字體   wcf1.setBorder(Border.LEFT, BorderLineStyle.THIN);   //設置邊框--實線;    wcf1.setVerticalAlignment(VerticalAlignment.CENTRE);  //設置垂直對齊   wcf1.setAlignment(Alignment.CENTRE);      //設置文字水平居中對齊方式;      // 以下循環數據庫獲取的信息   int c = 1; // 用于循環時Excel的行號   Iterator it = list.iterator();   while (it.hasNext()) {    Logs tc = (Logs) it.next();    DateFormat dfmt = new SimpleDateFormat("yyyy.MM");        String xh = String.valueOf(c);    if(xh== null){     xh = "";    }    Label content0 = new Label(0, c+2, xh, wcf);       //序號        String name = tc.getUserName();    if(name == null){     name = "";    }    Label content1 = new Label(1, c+2, name, wcf);      //用戶名        String xrPresent = tc.getLogTime();    if(xrPresent == null){     xrPresent = "";    }    Label content2 = new Label(2, c+2, xrPresent, wcf);     //記錄時間        String czModel = tc.getModel();    if(czModel == null){     czModel = "";    }    Label content3 = new Label(3, c+2, czModel, wcf);     //操作模塊        String sex = tc.getContent();    if(sex == null){     sex = "";    }    Label content4 = new Label(4, c+2, sex, wcf);       //操作內容        String birthday = tc.getOperate();    if(birthday == null){     birthday = "";    }    Label content5 = new Label(5, c+2, birthday, wcf);     //操作動作        String nation = tc.getIp();    if(nation == null){     nation = "";    }    Label content6 = new Label(6, c+2, nation, wcf);      //操作人IP        String origin = tc.getOrgName();    if(origin == null){     origin = "";    }    Label content7 = new Label(7, c+2, origin, wcf);      //所屬組織        String bPlace = tc.getRemark();    if(bPlace == null){     bPlace = "";    }    Label content8 = new Label(8, c+2, bPlace, wcf);      //備注        String abc="";    Label content9 = new Label(9, c+2, abc, wcf1);      //備注            sheet.setRowView(c+2, 600); // 設置行高    sheet.setRowView(c+2, 600);    sheet.setRowView(c+2, 600);    sheet.setRowView(c+2, 600);    sheet.setRowView(c+2, 600);    sheet.setRowView(c+2, 600);    sheet.setRowView(c+2, 600);    sheet.setRowView(c+2, 600);    sheet.setRowView(c+2, 600);    sheet.setRowView(c+2, 600);    sheet.mergeCells(0, c+2, 0, c+2); // 合并第一列第c+2行到第一列第c+2行的所有單元格    sheet.mergeCells(1, c+2, 0, c+2); //mergeCells(a,b,c,d) 單元格合并函數    sheet.mergeCells(2, c+2, 0, c+2); //a 單元格的列號    sheet.mergeCells(3, c+2, 0, c+2); //b 單元格的行號    sheet.mergeCells(4, c+2, 0, c+2); //c 從單元格[a,b]起,向下合并到c列    sheet.mergeCells(5, c+2, 0, c+2); //d 從單元格[a,b]起,向下合并到d行    sheet.mergeCells(6, c+2, 0, c+2);    sheet.mergeCells(7, c+2, 0, c+2);    sheet.mergeCells(8, c+2, 0, c+2);    sheet.mergeCells(9, c+2, 0, c+2);    sheet.addCell(content0);    sheet.addCell(content1);    sheet.addCell(content2);    sheet.addCell(content3);    sheet.addCell(content4);    sheet.addCell(content5);    sheet.addCell(content6);    sheet.addCell(content7);    sheet.addCell(content8);    sheet.addCell(content9);    c++;   }   wbook.write(); // 寫入文件   wbook.close();   os.close();  } catch (Exception e) {   throw new PaikeException("導出文件出錯");  } }

以上這篇jxl 導出數據到excel的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵阳市| 乌鲁木齐县| 东平县| 芜湖县| 姜堰市| 旅游| 稷山县| 买车| 柳江县| 巩义市| 邮箱| 和平县| 垫江县| 平果县| 资溪县| 京山县| 临夏市| 潍坊市| 墨脱县| 普陀区| 麻城市| 清丰县| 赣榆县| 绥化市| 休宁县| 资源县| 丰顺县| 鹤岗市| 华池县| 乌兰察布市| 恭城| 丹寨县| 凌海市| 水富县| 浙江省| 淮滨县| 聂拉木县| 晋州市| 米泉市| 台东市| 寿阳县|