java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
2015-03-12 15:11
926 查看
在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况。有时候也需要导出pdf或者CSV报 表。其实原理都差不多。刚开始本来不打算也这篇博客介绍这个的。感觉这篇博客和前面的博客有点雷同。原理基本都一样。但想了想。有时候可能有些童鞋遇到这 样的需求会无从下手。所以还是记录下来。帮助一下那些需要这个需求的童鞋。如果你对前面几篇博客的原理都搞明白了。这篇博客你完全可以不看了。仅仅只是代 码的实现不同而已。好了。下面我们来看一下需求吧。
这个图就是我们的需求
就像你看到的一样。我们的需求就是列表内容是从数据库中读出来的。而我们想把从数据库得到的这个列表导出pdf、csv、excel报表。也不多说了。看代码吧:
操作很简单。选择好要导出的报表格式。点击导出按钮。我们在d盘相应的位置就会生成相应的报表。
这个图就是我们的需求
就像你看到的一样。我们的需求就是列表内容是从数据库中读出来的。而我们想把从数据库得到的这个列表导出pdf、csv、excel报表。也不多说了。看代码吧:
1 package com.bzu.csh; 2 3 import java.io.ByteArrayOutputStream; 4 import java.io.File; 5 import java.io.FileOutputStream; 6 import java.io.OutputStream; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 13 import jxl.Workbook; 14 import jxl.write.Label; 15 import jxl.write.WritableFont; 16 import jxl.write.WritableSheet; 17 import jxl.write.WritableWorkbook; 18 19 import org.apache.struts2.ServletActionContext; 20 21 import com.lowagie.text.Document; 22 import com.lowagie.text.Element; 23 import com.lowagie.text.Font; 24 import com.lowagie.text.PageSize; 25 import com.lowagie.text.Paragraph; 26 import com.lowagie.text.pdf.PdfPTable; 27 import com.lowagie.text.pdf.PdfWriter; 28 import com.opensymphony.xwork2.Action; 29 30 public class downloadAction implements Action { 31 32 private String downType; 33 34 public String getDownType() { 35 return downType; 36 } 37 38 public void setDownType(String downType) { 39 this.downType = downType; 40 } 41 42 public String execute() { 43 // TODO Auto-generated method stub 44 HttpServletRequest request = ServletActionContext.getRequest(); 45 //HttpServletResponse response = ServletActionContext.getResponse(); 46 //此处模拟数据库读出的数据。在真正的项目中。我们可以通过在session中保存的前端数据集合替换这里 47 List<Person> list = new ArrayList<Person>(); 48 for (int i = 1; i < 6; i++) { 49 Person person = new Person(); 50 person.setId(String.valueOf(i)); 51 person.setName(String.valueOf((char) (i + 64))); 52 person.setAge(i + 20); 53 person.setSex("man"); 54 list.add(person); 55 } 56 OutputStream os = null; 57 String fname = "personlist"; 58 if ("PDF".equals(downType)) { 59 try { 60 // response.reset(); 61 // os = response.getOutputStream(); 62 FileOutputStream out = new FileOutputStream("d://a.pdf"); 63 Document document = new Document(PageSize.A4, 50, 50, 50, 50); 64 // response.setContentType("application/pdf"); 65 // response.setHeader("Content-disposition", 66 // "attachment;filename=" + fname + ".pdf"); 67 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 68 69 PdfWriter.getInstance(document, out); 70 document.open(); 71 int cols = list.size(); 72 // 创建PDF表格 73 PdfPTable table = new PdfPTable(4); 74 // 设置pdf表格的宽度 75 table.setTotalWidth(500); 76 // 设置是否要固定其宽度 77 table.setLockedWidth(true); 78 // 表头字体 79 Font thfont = new Font(); 80 // 设置表头字体的大小 81 thfont.setSize(7); 82 // 设置表头字体的样式 83 thfont.setStyle(Font.BOLD); 84 Font tdfont = new Font(); 85 tdfont.setSize(7); 86 tdfont.setStyle(Font.NORMAL); 87 // 设置水平对齐方式 88 table.setHorizontalAlignment(Element.ALIGN_MIDDLE); 89 // 设置table的header 90 table.addCell(new Paragraph("id", thfont)); 91 table.addCell(new Paragraph("name", thfont)); 92 table.addCell(new Paragraph("sex", thfont)); 93 table.addCell(new Paragraph("age", thfont)); 94 // 循环设置table的每一行 95 for (int i = 0; i < list.size(); i++) { 96 Person p = (Person) list.get(i); 97 table.addCell(new Paragraph(p.getId(), tdfont)); 98 table.addCell(new Paragraph(p.getName(), tdfont)); 99 table.addCell(new Paragraph(p.getSex(), tdfont)); 100 table.addCell(new Paragraph(String.valueOf(p.getAge()), 101 tdfont)); 102 } 103 document.add(table); 104 document.close(); 105 // baos.writeTo(response.getOutputStream()); 106 baos.close(); 107 } catch (Exception e) { 108 e.printStackTrace(); 109 } 110 } else if ("CSV".equals(downType)) { 111 // response.reset(); 112 // 生成csv文件 113 //response.setHeader("Content-disposition", "attachment;filename=" 114 // + fname + ".csv"); 115 //response.setContentType("text/csv"); 116 //response.setCharacterEncoding("UTF-8"); 117 FileOutputStream out ; 118 String sep = ","; 119 try { 120 out = new FileOutputStream(new File("d://a.cvs")); 121 //out = response.getOutputStream(); 122 out.write("id".getBytes()); 123 out.write(sep.getBytes()); 124 out.write("name".getBytes()); 125 out.write(sep.getBytes()); 126 out.write("sex".getBytes()); 127 out.write(sep.getBytes()); 128 out.write("age".getBytes()); 129 out.write(sep.getBytes()); 130 out.write(System.getProperty("line.separator").getBytes()); 131 for (int i = 0; i < list.size(); i++) { 132 Person p = (Person) list.get(i); 133 out.write(p.getId().getBytes()); 134 out.write((sep + "/t").getBytes()); 135 out.write(p.getName().getBytes()); 136 out.write((sep + "/t").getBytes()); 137 out.write(p.getSex().getBytes()); 138 out.write((sep + "/t").getBytes()); 139 out.write(String.valueOf(p.getAge()).getBytes()); 140 out.write((sep + "/t").getBytes()); 141 out.write(sep.getBytes()); 142 out.write(System.getProperty("line.separator").getBytes()); 143 } 144 out.flush(); 145 //out.cloute(); 146 } catch (Exception e) { 147 e.printStackTrace(); 148 } 149 } else if (downType.equals("Excel")) { 150 //response.reset(); 151 // 生成xls文件 152 //response.setContentType("application/vnd.ms-excel"); 153 //response.setHeader("Content-disposition", "attachment;filename=" 154 // + fname + ".xls"); 155 try { 156 //os = response.getOutputStream(); 157 Label l = null; 158 WritableWorkbook wbook = Workbook.createWorkbook(new File( 159 "d://a.xls")); 160 // 写sheet名称 161 WritableSheet sheet = wbook.createSheet("my excel file", 0); 162 jxl.write.WritableFont wfc4 = new jxl.write.WritableFont( 163 WritableFont.ARIAL, 9, WritableFont.NO_BOLD, false, 164 jxl.format.UnderlineStyle.NO_UNDERLINE, 165 jxl.format.Colour.BLACK); 166 jxl.write.WritableCellFormat wcfFC4 = new jxl.write.WritableCellFormat( 167 wfc4); 168 wcfFC4.setBackground(jxl.format.Colour.LIGHT_GREEN); 169 int col = 0; 170 sheet.setColumnView(col, 12); 171 l = new Label(col, 0, "id", wcfFC4); 172 sheet.addCell(l); 173 col++; 174 sheet.setColumnView(col, 12); 175 l = new Label(col, 0, "name", wcfFC4); 176 sheet.addCell(l); 177 col++; 178 sheet.setColumnView(col, 12); 179 l = new Label(col, 0, "sex", wcfFC4); 180 sheet.addCell(l); 181 col++; 182 sheet.setColumnView(col, 12); 183 l = new Label(col, 0, "age", wcfFC4); 184 sheet.addCell(l); 185 186 // 设置字体样式 187 jxl.write.WritableFont wfc5 = new jxl.write.WritableFont( 188 WritableFont.ARIAL, 9, WritableFont.NO_BOLD, false, 189 jxl.format.UnderlineStyle.NO_UNDERLINE, 190 jxl.format.Colour.BLACK); 191 jxl.write.WritableCellFormat wcfFC5 = new jxl.write.WritableCellFormat( 192 wfc5); 193 for (int i = 0; i < list.size(); i++) { 194 Person p = (Person) list.get(i); 195 int j = 0; 196 l = new Label(j, i + 1, p.getId(), wcfFC5); 197 sheet.addCell(l); 198 j++; 199 l = new Label(j, i + 1, p.getName(), wcfFC5); 200 sheet.addCell(l); 201 j++; 202 l = new Label(j, i + 1, p.getSex(), wcfFC5); 203 sheet.addCell(l); 204 j++; 205 l = new Label(j, i + 1, String.valueOf(p.getAge()), wcfFC5); 206 sheet.addCell(l); 207 j++; 208 } 209 // 写入流中 210 wbook.write(); 211 wbook.close(); 212 213 } catch (Exception e) { 214 e.printStackTrace(); 215 } 216 } 217 return SUCCESS; 218 } 219 } 220
操作很简单。选择好要导出的报表格式。点击导出按钮。我们在d盘相应的位置就会生成相应的报表。
相关文章推荐
- java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
- java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- Java程序员从笨鸟到菜鸟之(一百零五)java操作office和pdf文件(三)利用jxl实现数据导出excel报表以及与POI的区别
- Java程序员从笨鸟到菜鸟之(一百零五)java操作office和pdf文件(三)利用jxl实现数据导出excel报表以及与POI的区别
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表
- java操作office和pdf文件页面列表…
- 页面列表导出cvs,excel、pdf报表
- java操作office和pdf文件页面列表…
- java操作office和pdf文件:读取word,excel和pdf文档内容
- Java程序员从笨鸟到菜鸟之(一百零三)java操作office和pdf文件(一)java读取word,excel和pdf文档内容
- Java程序员从笨鸟到菜鸟之(一百零三)java操作office和pdf文件(一)java读取word,excel和pdf文档内容
- java操作office和pdf文件java读取word,excel和pdf文档内容
- Java程序员从笨鸟到菜鸟之(一百零三)java操作office和pdf文件(一)java读取word,excel和pdf文档内容
- java操作Excel、PDF文件