java 生成简单word(利用Itext工具),生成简单Excel,以及下载笔记
1.java 生成简单word(包含图片表格)
pom中加入itext 相关依赖
<dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>com.lowagie</groupId> <artifactId>itext-rtf</artifactId> <version>2.1.7</version> </dependency>
2.java相关代码(数据与图片可以忽略)
/** * 新建报告(报告名字。图片。新闻id) * * @throws JSONException */ @Override public String addReport(String[] img, String[] newsId, String reportName, String loginId, String path, String imgPath) { Long name = System.currentTimeMillis(); String filePath = path + File.separator + name + ".doc"; File file = new File(filePath); Report report = new Report(); report.setLoginId(loginId); report.setReportName(reportName); report.setDownUrl(filePath); fileDao.addReport(report); System.out.println("插入报告成功" + report.getReportNo()); Document document = new Document(PageSize.A4); try { RtfWriter2.getInstance(document, new FileOutputStream(file)); } catch (FileNotFoundException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } document.open(); BaseFont bfChinese = null; try { bfChinese = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); } catch (DocumentException | IOException e1) { e1.printStackTrace(); } Font titleFont = new Font(bfChinese, 22, Font.BOLD); Font contextFont = new Font(bfChinese, 10, Font.NORMAL); Paragraph title = new Paragraph("统计报告", titleFont); title.setAlignment(Element.ALIGN_CENTER); // 红色的线 RtfShapePosition position; position = new RtfShapePosition(150, 0, 10400, 170); position.setXRelativePos(RtfShapePosition.POSITION_X_RELATIVE_MARGIN); position.setYRelativePos(RtfShapePosition.POSITION_Y_RELATIVE_PARAGRAPH); RtfShape shape = new RtfShape(RtfShape.SHAPE_RECTANGLE, position); RtfShapeProperty property = new RtfShapeProperty(RtfShapeProperty.PROPERTY_LINE_COLOR, Color.RED); shape.setProperty(property); Paragraph p1 = new Paragraph(shape); try { // logo Image imglogo = Image.getInstance(imgPath + File.separator + "dfgx.jpg"); imglogo.setAlignment(Image.LEFT);// 设置图片显示位置 imglogo.scaleAbsolute(80, 50);// 直接设定显示尺寸 document.add(imglogo); document.add(title); document.add(p1); } catch (Exception e) { e.printStackTrace(); } Table table = null; try { table = new Table(4); int width[] = { 40, 30, 15, 15 };// 设置每列宽度比例 table.setWidths(width); } catch (Exception e1) { e1.printStackTrace(); } table.setBorderWidth(1); table.setBorderColor(Color.BLACK); table.setPadding(0); table.setSpacing(0); try { table.addCell("标题"); table.addCell("链接"); table.addCell("渠道"); table.addCell("时间"); } catch (BadElementException e1) { e1.printStackTrace(); } List<Object> list = estoWeb.SelectId(newsId); String time = ""; String titleinfo = ""; String url = ""; String channel = ""; try { for (Object string : list) { JSONObject json = null; json = new JSONObject(String.valueOf(string)); channel = (String) json.get("webCell"); titleinfo = (String) json.get("titleCell"); url = (String) json.get("linkCell"); time = (String) json.get("dateCell"); table.addCell(new Paragraph(titleinfo)); table.addCell(new Paragraph(url)); table.addCell(new Paragraph(channel)); table.addCell(new Paragraph(time)); } } catch (Exception e) { e.printStackTrace(); } try { document.add(table); } catch (DocumentException e1) { e1.printStackTrace(); } for (String string : img) { Map<String, Object> map = fileDao.findReportPath(string); System.out.println(map.get("PIC_PATH")); Image img1 = null; try { img1 = Image.getInstance(imgPath + File.separator + String.valueOf(map.get("PIC_PATH"))); } catch (BadElementException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } img1.setAbsolutePosition(0, 0); img1.setAlignment(Image.ALIGN_CENTER);// 设置图片显示位置 img1.scaleAbsolute(360, 180);// 直接设定显示尺寸 try { document.add(img1); } catch (DocumentException e) { e.printStackTrace(); } } document.close(); return "ok"; }
3.生成简单Excel(参考 :http://blog.csdn.net/yongqingmiao/article/details/7179452)
pom加入相关依赖
<dependency> <groupId>jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6</version> </dependency>
4.java代码
File file; WritableWorkbook wwb; try { file = new File(imgpath + File.separator + "news.xls"); wwb = Workbook.createWorkbook(file); WritableSheet ws = wwb.createSheet("页1", 0); ws.addCell(new Label(0, 0, "时间")); ws.addCell(new Label(1, 0, "标题")); ws.addCell(new Label(2, 0, "链接")); ws.addCell(new Label(3, 0, "渠道")); List<Object> list = estoWeb.SelectId(newsId); String time = ""; String titleinfo = ""; String url = ""; String channel = ""; try { for (int i = 0; i < list.size(); i++) { JSONObject json = null; json = new JSONObject(String.valueOf(list.get(i))); channel = (String) json.get("webCell"); titleinfo = (String) json.get("titleCell"); url = (String) json.get("linkCell"); time = (String) json.get("dateCell"); ws.addCell(new Label(0, i + 1, time)); ws.addCell(new Label(1, i + 1, titleinfo)); ws.addCell(new Label(2, i + 1, url)); ws.addCell(new Label(3, i + 1, channel)); } wwb.write(); wwb.close(); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); }
5.下载demo(相关文件名参数参考)
InputStream inputStream = null; OutputStream os = null; res.setCharacterEncoding("utf-8"); res.setContentType("multipart/form-data"); res.setHeader("Content-Disposition", "attachment;filename=\"" + "news.xls" + "\""); try { // 下载文件 inputStream = new FileInputStream(new File(imgpath + File.separator + "news.xls")); os = res.getOutputStream(); byte[] b = new byte[4096]; int length; while ((length = inputStream.read(b)) > 0) { os.write(b, 0, length); } } catch (Exception e) { e.printStackTrace(); return "false"; } finally { try { os.flush(); os.close(); inputStream.close(); if (new File(imgpath + File.separator + "news.xls").exists()) { new File(imgpath + File.separator + "news.xls").delete(); } } catch (Exception e) { e.printStackTrace(); return "false"; } }
欢迎指正,交流沟通,共同进步!对您有帮助的话点下推荐~~