日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.

發布時間:2025/3/21 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在平常的開發中我們常常遇到不僅僅只是導出excel報表的情況。有時候也需要導出pdf或者CSV報表。其實原理都差不多。剛開始本來不打算也這篇博客介紹這個的。感覺這篇博客和前面的博客有點雷同。原理基本都一樣。但想了想。有時候可能有些童鞋遇到這樣的需求會無從下手。所以還是記錄下來。幫助一下那些需要這個需求的童鞋。如果你對前面幾篇博客的原理都搞明白了。這篇博客你完全可以不看了。僅僅只是代碼的實現不同而已。好了。下面我們來看一下需求吧。


這個圖就是我們的需求

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?



? ? ?就像你看到的一樣。我們的需求就是列表內容是從數據庫中讀出來的。而我們想把從數據庫得到的這個列表導出pdf、csv、excel報表。也不多說了。看代碼吧:


[java]?view plaincopy print?
  • <pre?code_snippet_id="630890"?snippet_file_name="blog_20150329_1_746209"?name="code"?class="java">package?com.bzu.csh;??
  • ??
  • import?java.io.ByteArrayOutputStream;??
  • import?java.io.File;??
  • import?java.io.FileOutputStream;??
  • import?java.io.OutputStream;??
  • import?java.util.ArrayList;??
  • import?java.util.List;??
  • ??
  • import?javax.servlet.http.HttpServletRequest;??
  • import?javax.servlet.http.HttpServletResponse;??
  • ??
  • import?jxl.Workbook;??
  • import?jxl.write.Label;??
  • import?jxl.write.WritableFont;??
  • import?jxl.write.WritableSheet;??
  • import?jxl.write.WritableWorkbook;??
  • ??
  • import?org.apache.struts2.ServletActionContext;??
  • ??
  • import?com.lowagie.text.Document;??
  • import?com.lowagie.text.Element;??
  • import?com.lowagie.text.Font;??
  • import?com.lowagie.text.PageSize;??
  • import?com.lowagie.text.Paragraph;??
  • import?com.lowagie.text.pdf.PdfPTable;??
  • import?com.lowagie.text.pdf.PdfWriter;??
  • import?com.opensymphony.xwork2.Action;??
  • ??
  • public?class?downloadAction?implements?Action?{??
  • ??
  • ????private?String?downType;??
  • ??
  • ????public?String?getDownType()?{??
  • ????????return?downType;??
  • ????}??
  • ??
  • ????public?void?setDownType(String?downType)?{??
  • ????????this.downType?=?downType;??
  • ????}??
  • ??
  • ????public?String?execute()?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????HttpServletRequest?request?=?ServletActionContext.getRequest();??
  • ????????//HttpServletResponse?response?=?ServletActionContext.getResponse();??
  • ????????//此處模擬數據庫讀出的數據。在真正的項目中。我們可以通過在session中保存的前端數據集合替換這里??
  • ????????List<Person>?list?=?new?ArrayList<Person>();??
  • ????????for?(int?i?=?1;?i?<?6;?i++)?{??
  • ????????????Person?person?=?new?Person();??
  • ????????????person.setId(String.valueOf(i));??
  • ????????????person.setName(String.valueOf((char)?(i?+?64)));??
  • ????????????person.setAge(i?+?20);??
  • ????????????person.setSex("man");??
  • ????????????list.add(person);??
  • ????????}??
  • ????????OutputStream?os?=?null;??
  • ????????String?fname?=?"personlist";??
  • ????????if?("PDF".equals(downType))?{??
  • ????????????try?{??
  • ????????????//??response.reset();??
  • ????????????//??os?=?response.getOutputStream();??
  • ????????????????FileOutputStream?out?=?new?FileOutputStream("d://a.pdf");??
  • ????????????????Document?document?=?new?Document(PageSize.A4,?50,?50,?50,?50);??
  • ????????????//??response.setContentType("application/pdf");??
  • ????????????//??response.setHeader("Content-disposition",??
  • ????????????//??????????"attachment;filename="?+?fname?+?".pdf");??
  • ????????????????ByteArrayOutputStream?baos?=?new?ByteArrayOutputStream();??
  • ??
  • ????????????????PdfWriter.getInstance(document,?out);??
  • ????????????????document.open();??
  • ????????????????int?cols?=?list.size();??
  • ????????????????//?創建PDF表格??
  • ????????????????PdfPTable?table?=?new?PdfPTable(4);??
  • ????????????????//?設置pdf表格的寬度??
  • ????????????????table.setTotalWidth(500);??
  • ????????????????//?設置是否要固定其寬度??
  • ????????????????table.setLockedWidth(true);??
  • ????????????????//?表頭字體??
  • ????????????????Font?thfont?=?new?Font();??
  • ????????????????//?設置表頭字體的大小??
  • ????????????????thfont.setSize(7);??
  • ????????????????//?設置表頭字體的樣式??
  • ????????????????thfont.setStyle(Font.BOLD);??
  • ????????????????Font?tdfont?=?new?Font();??
  • ????????????????tdfont.setSize(7);??
  • ????????????????tdfont.setStyle(Font.NORMAL);??
  • ????????????????//?設置水平對齊方式??
  • ????????????????table.setHorizontalAlignment(Element.ALIGN_MIDDLE);??
  • ????????????????//?設置table的header??
  • ????????????????table.addCell(new?Paragraph("id",?thfont));??
  • ????????????????table.addCell(new?Paragraph("name",?thfont));??
  • ????????????????table.addCell(new?Paragraph("sex",?thfont));??
  • ????????????????table.addCell(new?Paragraph("age",?thfont));??
  • ????????????????//?循環設置table的每一行??
  • ????????????????for?(int?i?=?0;?i?<?list.size();?i++)?{??
  • ????????????????????Person?p?=?(Person)?list.get(i);??
  • ????????????????????table.addCell(new?Paragraph(p.getId(),?tdfont));??
  • ????????????????????table.addCell(new?Paragraph(p.getName(),?tdfont));??
  • ????????????????????table.addCell(new?Paragraph(p.getSex(),?tdfont));??
  • ????????????????????table.addCell(new?Paragraph(String.valueOf(p.getAge()),??
  • ????????????????????????????tdfont));??
  • ????????????????}??
  • ????????????????document.add(table);??
  • ????????????????document.close();??
  • ????????????//??baos.writeTo(response.getOutputStream());??
  • ????????????????baos.close();??
  • ????????????}?catch?(Exception?e)?{??
  • ????????????????e.printStackTrace();??
  • ????????????}??
  • ????????}?else?if?("CSV".equals(downType))?{??
  • ????????//??response.reset();??
  • ????????????//?生成csv文件??
  • ????????????//response.setHeader("Content-disposition",?"attachment;filename="??
  • ????????????//??????+?fname?+?".csv");??
  • ????????????//response.setContentType("text/csv");??
  • ????????????//response.setCharacterEncoding("UTF-8");??
  • ????????????FileOutputStream?out?;??
  • ????????????String?sep?=?",";??
  • ????????????try?{??
  • ????????????????out?=?new?FileOutputStream(new?File("d://a.cvs"));??
  • ????????????????//out?=?response.getOutputStream();??
  • ????????????????out.write("id".getBytes());??
  • ????????????????out.write(sep.getBytes());??
  • ????????????????out.write("name".getBytes());??
  • ????????????????out.write(sep.getBytes());??
  • ????????????????out.write("sex".getBytes());??
  • ????????????????out.write(sep.getBytes());??
  • ????????????????out.write("age".getBytes());??
  • ????????????????out.write(sep.getBytes());??
  • ????????????????out.write(System.getProperty("line.separator").getBytes());??
  • ????????????????for?(int?i?=?0;?i?<?list.size();?i++)?{??
  • ????????????????????Person?p?=?(Person)?list.get(i);??
  • ????????????????????out.write(p.getId().getBytes());??
  • ????????????????????out.write((sep?+?"/t").getBytes());??
  • ????????????????????out.write(p.getName().getBytes());??
  • ????????????????????out.write((sep?+?"/t").getBytes());??
  • ????????????????????out.write(p.getSex().getBytes());??
  • ????????????????????out.write((sep?+?"/t").getBytes());??
  • ????????????????????out.write(String.valueOf(p.getAge()).getBytes());??
  • ????????????????????out.write((sep?+?"/t").getBytes());??
  • ????????????????????out.write(sep.getBytes());??
  • ????????????????????out.write(System.getProperty("line.separator").getBytes());??
  • ????????????????}??
  • ????????????????out.flush();??
  • ????????????????//out.cloute();??
  • ????????????}?catch?(Exception?e)?{??
  • ????????????????e.printStackTrace();??
  • ????????????}??
  • ????????}?else?if?(downType.equals("Excel"))?{??
  • ????????????//response.reset();??
  • ????????????//?生成xls文件??
  • ????????????//response.setContentType("application/vnd.ms-excel");??
  • ????????????//response.setHeader("Content-disposition",?"attachment;filename="??
  • ????????????//??????+?fname?+?".xls");??
  • ????????????try?{??
  • ????????????????//os?=?response.getOutputStream();??
  • ????????????????Label?l?=?null;??
  • ????????????????WritableWorkbook?wbook?=?Workbook.createWorkbook(new?File(??
  • ????????????????????????"d://a.xls"));??
  • ????????????????//?寫sheet名稱??
  • ????????????????WritableSheet?sheet?=?wbook.createSheet("my?excel?file",?0);??
  • ????????????????jxl.write.WritableFont?wfc4?=?new?jxl.write.WritableFont(??
  • ????????????????????????WritableFont.ARIAL,?9,?WritableFont.NO_BOLD,?false,??
  • ????????????????????????jxl.format.UnderlineStyle.NO_UNDERLINE,??
  • ????????????????????????jxl.format.Colour.BLACK);??
  • ????????????????jxl.write.WritableCellFormat?wcfFC4?=?new?jxl.write.WritableCellFormat(??
  • ????????????????????????wfc4);??
  • ????????????????wcfFC4.setBackground(jxl.format.Colour.LIGHT_GREEN);??
  • ????????????????int?col?=?0;??
  • ????????????????sheet.setColumnView(col,?12);??
  • ????????????????l?=?new?Label(col,?0,?"id",?wcfFC4);??
  • ????????????????sheet.addCell(l);??
  • ????????????????col++;??
  • ????????????????sheet.setColumnView(col,?12);??
  • ????????????????l?=?new?Label(col,?0,?"name",?wcfFC4);??
  • ????????????????sheet.addCell(l);??
  • ????????????????col++;??
  • ????????????????sheet.setColumnView(col,?12);??
  • ????????????????l?=?new?Label(col,?0,?"sex",?wcfFC4);??
  • ????????????????sheet.addCell(l);??
  • ????????????????col++;??
  • ????????????????sheet.setColumnView(col,?12);??
  • ????????????????l?=?new?Label(col,?0,?"age",?wcfFC4);??
  • ????????????????sheet.addCell(l);??
  • ??
  • ????????????????//?設置字體樣式??
  • ????????????????jxl.write.WritableFont?wfc5?=?new?jxl.write.WritableFont(??
  • ????????????????????????WritableFont.ARIAL,?9,?WritableFont.NO_BOLD,?false,??
  • ????????????????????????jxl.format.UnderlineStyle.NO_UNDERLINE,??
  • ????????????????????????jxl.format.Colour.BLACK);??
  • ????????????????jxl.write.WritableCellFormat?wcfFC5?=?new?jxl.write.WritableCellFormat(??
  • ????????????????????????wfc5);??
  • ????????????????for?(int?i?=?0;?i?<?list.size();?i++)?{??
  • ????????????????????Person?p?=?(Person)?list.get(i);??
  • ????????????????????int?j?=?0;??
  • ????????????????????l?=?new?Label(j,?i?+?1,?p.getId(),?wcfFC5);??
  • ????????????????????sheet.addCell(l);??
  • ????????????????????j++;??
  • ????????????????????l?=?new?Label(j,?i?+?1,?p.getName(),?wcfFC5);??
  • ????????????????????sheet.addCell(l);??
  • ????????????????????j++;??
  • ????????????????????l?=?new?Label(j,?i?+?1,?p.getSex(),?wcfFC5);??
  • ????????????????????sheet.addCell(l);??
  • ????????????????????j++;??
  • ????????????????????l?=?new?Label(j,?i?+?1,?String.valueOf(p.getAge()),?wcfFC5);??
  • ????????????????????sheet.addCell(l);??
  • ????????????????????j++;??
  • ????????????????}??
  • ????????????????//?寫入流中??
  • ????????????????wbook.write();??
  • ????????????????wbook.close();??
  • ??
  • ????????????}?catch?(Exception?e)?{??
  • ????????????????e.printStackTrace();??
  • ????????????}??
  • ????????}??
  • ????????return?SUCCESS;??
  • ????}??
  • ????}??
  • ????</pre><br><br>??

  • 操作很簡單。選擇好要導出的報表格式。點擊導出按鈕。我們在d盤相應的位置就會生成相應的報表。


    OK,介紹完畢。希望可以幫助有這個需求的朋友。

    ------------------------------------------------------------------------------------------------------------

    《Java程序員由笨鳥到菜鳥》電子版書正式發布,歡迎大家下載


    http://blog.csdn.NET/csh624366188/article/details/7999247


    from:?http://blog.csdn.net/csh624366188/article/details/8207600

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。