JAVA生成Excel文件

合集下载

java创建excel的常用方法

java创建excel的常用方法

java创建excel的常用方法
Java中创建Excel文件有多种方法,以下是一些常用的方法:
1. Apache POI库,Apache POI是一个用于读写Microsoft Office文件的开源库,可以使用它来创建和编辑Excel文件。

通过POI库,可以创建工作簿(Workbook)、工作表(Sheet)、单元格(Cell)等对象,然后填充数据并保存为Excel文件。

这是Java中
创建Excel文件最常用的方法之一。

2. JExcelApi库,JExcelApi也是一个用于操作Excel文件的
开源库,它提供了创建、读取和修改Excel文件的功能。

通过JExcelApi,可以创建工作簿、工作表,并向单元格中写入数据,最
后保存为Excel文件。

3. 使用Java的CSV库,虽然CSV文件不是真正的Excel文件,但在某些情况下也可以满足需求。

Java中有一些CSV库可以用来创
建和编辑CSV文件,例如OpenCSV和uniVocity等。

这些库可以将
数据写入CSV格式的文件,然后可以通过Excel等软件打开并保存
为Excel文件。

4. 使用第三方Excel库,除了上述提到的库外,还有一些第三
方的商业库,如Aspose.Cells,可以用来创建和编辑Excel文件。

这些库通常提供了更丰富的功能和更好的性能,但需要购买许可证。

总的来说,以上列举的方法是Java中创建Excel文件的常用方法。

选择合适的方法取决于具体的需求和项目的要求。

希望这些信
息能够帮助到你。

【实用资料】Java生成Excel文件.doc

【实用资料】Java生成Excel文件.doc

利用Java生成Excel文件一、POI简介POI是apache免费的开源插件,它主要提供对Microsoft产品编程的API。

Jakarta POI中最成熟的API就是HSSF。

通过HSSF可以用Java代码来读取、写入和修改Excel文件。

HSSF(Horrible Spreadsheet Format)是读写Microsoft Excel的API。

HDF(Horrible Document Format)是读写Microsoft Wor 97的API。

引入包:import ermodel.*;import org.apache.poi.hssf.util.Region;二、数据写入的创建过程把数据写入Excel中必须经过以下步骤。

(1)创建workbook对象HSSFWorkbook workbook=new HSSFWorkbook();(2)通过workbook对象创建工作区对象并命名为test excelHSSFSheet sheet=workbook.createSheet(“test excel“);(3)由工作区对象创建行对象HSSFRow row=sheet.createRow(0);(4)由行对象创建单元格对象HSSFCell cell=row.createCell((short)1);(5)把数据写入将单元格里Cell.setCellValue(“this is title”);(6)保存Excel文档//import java.io.FileOutputStream;FileOutputStream out=FileOutputStream(“c:\\test.xls”);workbook.write(out); //将Excel文档保存到C盘根目录下test.xls out.close();三、如何设置字体和单元格样式通过HSSFFont和HSSFCellStyle类设置数据在Excel中显示的字体、颜色、大小和单元格样式。

Java生成Excel文件

Java生成Excel文件

Java生成Excel文件Java作为一种广泛应用的编程语言,提供了许多库和工具来生成和操作Excel 文件。

在本文中,我将详细介绍使用Java生成Excel文件的方法和技巧。

1. Apache POI库Apache POI是一个流行的Java库,用于处理Microsoft Office格式的文件,包括Excel。

它提供了一组API来创建、读取和修改Excel文件。

首先,您需要在项目中添加Apache POI的依赖。

可以通过Maven或手动下载jar文件来完成。

```xml<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>```2. 创建Excel文件下面是一个简单的示例,展示了如何使用Apache POI创建一个包含数据的Excel文件。

```javaimport ermodel.*;import ermodel.XSSFWorkbook;public class ExcelGenerator {public static void main(String[] args) {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");// 创建标题行Row headerRow = sheet.createRow(0);Cell headerCell = headerRow.createCell(0);headerCell.setCellValue("姓名");headerCell = headerRow.createCell(1);headerCell.setCellValue("年龄");// 创建数据行Row dataRow = sheet.createRow(1);Cell dataCell = dataRow.createCell(0);dataCell.setCellValue("张三");dataCell = dataRow.createCell(1);dataCell.setCellValue(25);// 保存Excel文件try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) { workbook.write(outputStream);} catch (IOException e) {e.printStackTrace();}}}```上述代码创建了一个包含姓名和年龄的Excel文件。

Java实现生成Excel

Java实现生成Excel

需要的lib:poi-3.7 .jarpoi-ooxml-3.7.jarpoi-ooxml-schemas-3.7.jarpoi-scratchpad-3.7.jarpackage com.demo.test;import java.io.FileOutputStream;import ermodel.HSSFCell;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;/*** 生成Excel文件** @author smile* QQ:1963938311**/public class ExcelDemo {// 测试数据private String[] strs= new String[] { "a", "b", "c", "d", "e", "f"};/*** 生成Excel** @throws Exception*/public void createExcel(String filename) throws Exception { // 产生工作簿对象HSSFWorkbook workbook = new HSSFWorkbook();// 产生工作表对象HSSFSheet sheet = workbook.createSheet();// 设置第一个工作表的名称为firstSheetworkbook.setSheetName(0, "测试Sheet");// 标题String[] titles = { "编号", "值" };setSheet(sheet, 0, titles);for (int i = 0; i < strs.length; i++) {String[] cells = new String[] { "100" + i, strs[i] };setSheet(sheet, i + 1, cells);}FileOutputStream fOut = new FileOutputStream(filename);workbook.write(fOut);fOut.flush();fOut.close();System.out.println("文件生成...");}/*** 填充单元格** @param sheet* @param rowIndex* @param params*/public void setSheet(HSSFSheet sheet, int rowIndex, String[] params) {// 产生行HSSFRow row = sheet.createRow(rowIndex);for (int i = 0; i < params.length; i++) {// 产生单元格HSSFCell cell = row.createCell(i);// 设置单元格内容为字符串型cell.setCellType(HSSFCell.CELL_TYPE_STRING);// 往第一个单元格中写入信息cell.setCellValue(params[i]);}}/*** 主入口** @param args* @throws Exception*/public static void main(String[] args) throws Exception { ExcelDemo demo = new ExcelDemo();demo.createExcel("f:\\test.xls");}}。

Java导出Excel文件,在Wps上可以打开但是Office上打不开的问题

Java导出Excel文件,在Wps上可以打开但是Office上打不开的问题

Java导出Excel⽂件,在Wps上可以打开但是Office上打不开的问题在做项⽬过程中,涉及到需要导出列表数据1.前端如果⽤xlsx格式接收表格后台⽤XSSFWorkbook workbook = new XSSFWorkbook();创建⼯作薄response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.addHeader("Content-Disposition", "attachment;filename=fileName" + ".xlsx");2.前端如果⽤⽤xls格式接收表格后台⽤HSSFWorkbook workbook = new HSSFWorkbook();创建⼯作薄response.setContentType("application/vnd.ms-excel");response.addHeader("Content-Disposition", "attachment;filename=fileName"+".xls");那么 xls 和 xlsx有什么区别?(根据⾃⾝情况选择使⽤)⽂件核⼼结构不同:xls核⼼结构是复合⽂档类型的;xlsx 的核⼼结构是 XML 类型的结构,并且基于XML进⾏压缩(占⽤空间更⼩),所以也可以看做zip⽂件,将⼀个“.xlsx”⽂件的后缀改为ZIP 后,⽤解压软件解压,可以看到⾥⾯有⼀个xml⽂件和⽂件的主要内容。

版本不同:xls是excel2003及以前版本所⽣成的⽂件格式xlsx是excel2007及以后版本所⽣成的⽂件格式(2007 是可以兼容2003的xls格式的)最⼤⾏列得数量不同:xls最⼤只有65536⾏、256列xlsx可以有1048576⾏、16384列。

Java生成Excel表格的代码

Java生成Excel表格的代码

Java⽣成Excel表格的代码1. 我们先定义这三个类DataItem类,表⽰⼀个单元格内的数字package com.tntxia.pem.entity;public class DataItem {private String value;private String dataType;private String cellStyle="";public String getCellStyle() {return cellStyle;}public void setCellStyle(String cellStyle) {this.cellStyle = cellStyle;}/*** 空构造函数*/public DataItem(){}/*** 字符串参数的构造函数,默认将参数作为这个DataItem的值*/public DataItem(String value){this.value = value;}public String getDataType() {return dataType;}public void setDataType(String dataType) {this.dataType = dataType;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}} DataRow类,表⽰Excel中的⼀⾏,由多个DataItem组成package com.tntxia.pem.entity;import java.util.ArrayList;public class DataRow {private ArrayList<DataItem> dataItems=new ArrayList<DataItem>();public ArrayList<DataItem> getDataItems() {return dataItems;}public void setDataItems(ArrayList<DataItem> dataItems) {this.dataItems = dataItems;}public void add(DataItem item){public void add(String value){this.dataItems.add(new DataItem(value));}public int size(){return this.getDataItems().size();}} DataList类,整个表的数据,由多个DataRow组成。

Java生成和操作Excel文件

Java生成和操作Excel文件

Java⽣成和操作Excel⽂件JAVA EXCEL API:是⼀开放源码项⽬,通过它Java开发⼈员可以读取Excel⽂件的内容、创建新的Excel⽂件、更新已经存在的Excel⽂件。

使⽤该API⾮Windows操作系统也可以通过纯Java应⽤来处理Excel数据表。

因为它是使⽤Java编写的,所以我们在Web应⽤中可以通过JSP、Servlet来调⽤API实现对Excel数据表的访问。

下载:官⽅⽹站下载最新版本(本⼈下的是jexcelapi_2_6_12.tar.gz,解压后将⾥⾯的jxl.jar复制到WEB-INF/lib⽬录下⾯即可)Java Excel API的jar包可以通过以下URL获得:(包括所有版本):直接下载地址(迅雷上新建任务即可):⼀、JSP⽣成简单的Excel⽂件package beans.excel;import java.io.IOException;import java.io.OutputStream;import jxl.Workbook;import bel;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class SimpleExcelWrite {public void createExcel(OutputStream os) throws WriteException,IOException{//创建⼯作薄WritableWorkbook workbook = Workbook.createWorkbook(os);//创建新的⼀页WritableSheet sheet = workbook.createSheet("First Sheet",0);//创建要显⽰的内容,创建⼀个单元格,第⼀个参数为列坐标,第⼆个参数为⾏坐标,第三个参数为内容Label xuexiao = new Label(0,0,"学校");sheet.addCell(xuexiao);Label zhuanye = new Label(1,0,"专业");sheet.addCell(zhuanye);Label jingzhengli = new Label(2,0,"专业竞争⼒");sheet.addCell(jingzhengli);Label qinghua = new Label(0,1,"清华⼤学");sheet.addCell(qinghua);Label jisuanji = new Label(1,1,"计算机专业");sheet.addCell(jisuanji);Label gao = new Label(2,1,"⾼");sheet.addCell(gao);Label beida = new Label(0,2,"北京⼤学");sheet.addCell(beida);Label falv = new Label(1,2,"法律专业");sheet.addCell(falv);Label zhong = new Label(2,2,"中");sheet.addCell(zhong);Label ligong = new Label(0,3,"北京理⼯⼤学");sheet.addCell(ligong);Label hangkong = new Label(1,3,"航空专业");sheet.addCell(hangkong);Label di = new Label(2,3,"低");sheet.addCell(di);//把创建的内容写⼊到输出流中,并关闭输出流workbook.write();workbook.close();os.close();}}SimpleExcelWrite.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><%@ page import="java.io.*" %><%@ page import="beans.excel.*" %><%String fname = "学校竞争⼒情况";OutputStream os = response.getOutputStream();//取得输出流response.reset();//清空输出流//下⾯是对中⽂⽂件名的处理response.setCharacterEncoding("UTF-8");//设置相应内容的编码格式fname = .URLEncoder.encode(fname,"UTF-8");response.setHeader("Content-Disposition","attachment;filename="+new String(fname.getBytes("UTF-8"),"GBK")+".xls"); response.setContentType("application/msexcel");//定义输出类型SimpleExcelWrite sw = new SimpleExcelWrite();sw.createExcel(os);%><html><head><title></title></head><body></body></html>⼆、⽣成复杂数据格式Excel⽂件package beans.excel;import java.io.IOException;import java.io.OutputStream;import java.util.Calendar;import java.util.Date;import jxl.Workbook;import jxl.write.Boolean;import jxl.write.DateFormats;import jxl.write.DateTime;import bel;import jxl.write.Number;import jxl.write.WritableCellFormat;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class ComplexDataExcelWrite {public void createExcel(OutputStream os) throws WriteException,IOException {//创建⼯作薄WritableWorkbook workbook = Workbook.createWorkbook(os);//创建新的⼀页WritableSheet sheet = workbook.createSheet("First Sheet", 0);//创建要显⽰的具体内容Label formate = new Label(0,0,"数据格式");sheet.addCell(formate);Label floats = new Label(1,0,"浮点型");sheet.addCell(floats);Label integers = new Label(2,0,"整型");sheet.addCell(integers);Label booleans = new Label(3,0,"布尔型");sheet.addCell(booleans);Label dates = new Label(4,0,"⽇期格式");sheet.addCell(dates);Label example = new Label(0,1,"数据⽰例");sheet.addCell(example);//浮点数据Number number = new Number(1,1,3.1415926535);sheet.addCell(number);//整形数据Number ints = new Number(2,1,15042699);sheet.addCell(ints);Boolean bools = new Boolean(3,1,true);sheet.addCell(bools);//⽇期型数据Calendar c = Calendar.getInstance();Date date = c.getTime();WritableCellFormat cf1 = new WritableCellFormat(DateFormats.FORMAT1);DateTime dt = new DateTime(4,1,date,cf1);sheet.addCell(dt);//把创建的内容写⼊到输出流中,并关闭输出流workbook.write();workbook.close();os.close();}}三、⽣成复杂布局和样式的Excel⽂件package beans.excel;import java.io.IOException;import java.io.OutputStream;import java.util.Calendar;import java.util.Date;import jxl.Workbook;import jxl.format.Colour;import jxl.format.UnderlineStyle;import jxl.write.Boolean;import jxl.write.DateFormats;import jxl.write.DateTime;import bel;import jxl.write.Number;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class MutiStyleExcelWrite {public void createExcel(OutputStream os) throws WriteException,IOException {//创建⼯作薄WritableWorkbook workbook = Workbook.createWorkbook(os);//创建新的⼀页WritableSheet sheet = workbook.createSheet("First Sheet", 0);//构造表头sheet.mergeCells(0, 0, 4, 0);//添加合并单元格,第⼀个参数是起始列,第⼆个参数是起始⾏,第三个参数是终⽌列,第四个参数是终⽌⾏WritableFont bold = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//设置字体种类和⿊体显⽰,字体为Arial,字号⼤⼩为10,采⽤⿊体显⽰WritableCellFormat titleFormate = new WritableCellFormat(bold);//⽣成⼀个单元格样式控制对象titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//单元格中的内容⽔平⽅向居中titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直⽅向居中Label title = new Label(0,0,"JExcelApi⽀持数据类型详细说明",titleFormate);sheet.setRowView(0, 600, false);//设置第⼀⾏的⾼度sheet.addCell(title);//创建要显⽰的具体内容WritableFont color = new WritableFont(WritableFont.ARIAL);//选择字体color.setColour(Colour.GOLD);//设置字体颜⾊为⾦黄⾊WritableCellFormat colorFormat = new WritableCellFormat(color);Label formate = new Label(0,1,"数据格式",colorFormat);sheet.addCell(formate);Label floats = new Label(1,1,"浮点型");sheet.addCell(floats);Label integers = new Label(2,1,"整型");sheet.addCell(integers);Label booleans = new Label(3,1,"布尔型");sheet.addCell(booleans);Label dates = new Label(4,1,"⽇期格式");sheet.addCell(dates);Label example = new Label(0,2,"数据⽰例",colorFormat);sheet.addCell(example);//浮点数据//设置下划线WritableFont underline= new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE); WritableCellFormat greyBackground = new WritableCellFormat(underline);greyBackground.setBackground(Colour.GRAY_25);//设置背景颜⾊为灰⾊Number number = new Number(1,2,3.1415926535,greyBackground);sheet.addCell(number);//整形数据WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//⿊体WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber);Number ints = new Number(2,2,15042699,boldNumberFormate);sheet.addCell(ints);//布尔型数据Boolean bools = new Boolean(3,2,true);sheet.addCell(bools);//⽇期型数据//设置⿊体和下划线WritableFont boldDate = new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.BOLD,false,UnderlineStyle.SINGLE);WritableCellFormat boldDateFormate = new WritableCellFormat(boldDate,DateFormats.FORMAT1);Calendar c = Calendar.getInstance();Date date = c.getTime();DateTime dt = new DateTime(4,2,date,boldDateFormate);sheet.addCell(dt);//把创建的内容写⼊到输出流中,并关闭输出流workbook.write();workbook.close();os.close();}}四、JSP读取Excel报表<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><%@ page import="java.io.File" %><%@ page import="jxl.Cell" %><%@ page import="jxl.Sheet" %><%@ page import="jxl.Workbook" %><html><head><title></title></head><body><font size="2"><%String fileName = "D:/学校竞争⼒情况.xls";File file = new File(fileName);//根据⽂件名创建⼀个⽂件对象Workbook wb = Workbook.getWorkbook(file);//从⽂件流中取得Excel⼯作区对象Sheet sheet = wb.getSheet(0);//从⼯作区中取得页,取得这个对象的时候既可以⽤名称来获得,也可以⽤序号。

Java导出数据生成Excel表格

Java导出数据生成Excel表格

Java导出数据⽣成Excel表格事先准备:⼯具类:package com.wazn.learn.util.export;import java.sql.Connection;import java.sql.DriverManager;public class DbUtil {private String dbUrl="jdbc:mysql://localhost:3306/basepro";private String dbUserName="user";private String dbPassword="user";private String jdbcName = "com.mysql.jdbc.Driver";public Connection getCon() throws Exception {Class.forName(jdbcName);Connection con = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);return con;}public void closeCon(Connection con) throws Exception {if (con != null) {con.close();}}}package com.wazn.learn.util.export;import java.sql.ResultSet;import ermodel.Row;import ermodel.Sheet;import ermodel.Workbook;public class ExcelUtil {public static void fillExcelData(ResultSet rs, Workbook wb, String[] headers) throws Exception {int rowIndex = 0; //定义⾏的初始值Sheet sheet = wb.createSheet(); //创建sheet页Row row = sheet.createRow(rowIndex++); //⾏数⾃增+1//将头信息填进单元格for (int i = 0; i < headers.length; i++) {row.createCell(i).setCellValue(headers[i]);}while (rs.next()) {row = sheet.createRow(rowIndex++); //增加⾏数System.out.println(row);for (int i = 0; i < headers.length; i++) { // 添加内容row.createCell(i).setCellValue(rs.getObject(i + 1).toString());}}}}package com.wazn.learn.util.export;import java.io.OutputStream;import java.io.PrintWriter;import javax.servlet.http.HttpServletResponse;import ermodel.Workbook;public class ResponseUtil {public static void write(HttpServletResponse response, Object o) throws Exception {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();out.println(o.toString());out.flush();out.close();}public static void export(HttpServletResponse response, Workbook wb, String fileName) throws Exception{ //设置头固定格式response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "iso8859-1")); response.setContentType("text/html;charset=utf-8");OutputStream out = response.getOutputStream();wb.write(out);out.flush();out.close();}}Controller层:package com.wazn.learn.controller.teachclass;import java.sql.Connection;import java.sql.ResultSet;import javax.servlet.http.HttpServletResponse;import ermodel.HSSFWorkbook;import ermodel.Workbook;import org.apache.shiro.authz.annotation.RequiresPermissions;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import com.wazn.learn.dao.impl.ExportDao;import com.wazn.learn.util.export.DbUtil;import com.wazn.learn.util.export.ExcelUtil;import com.wazn.learn.util.export.ResponseUtil;import com.wordnik.swagger.annotations.ApiOperation;@Controller@Scope("prototype")@RequestMapping("/teach")public class ExportController {ExportDao exportDao;ExcelUtil excelUtil;@GetMapping("/page")public String stulook() {return "teach/course/export";}@SuppressWarnings("static-access")@ApiOperation(value = "导出Excel")@RequiresPermissions("upms:system:export")@RequestMapping(value = "/export", method = RequestMethod.GET)@ResponseBodypublic String export(HttpServletResponse response,String sdate,String edate) throws Exception {ExportDao exportDao = new ExportDao();DbUtil dbUtil = new DbUtil();Connection con = null;ExcelUtil excelUtil = new ExcelUtil();try {con = dbUtil.getCon();Workbook wb = new HSSFWorkbook();String headers[] = {"编号","学号","签到时间", "签到⽇期", "⽤户名","所属公司","职业"};ResultSet rs = exportDao.exportSign(con,sdate,edate);excelUtil.fillExcelData(rs, wb, headers);ResponseUtil.export( response, wb, "签到管理.xls");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}return null;}@SuppressWarnings("static-access")@ApiOperation(value = "导出Excel")@RequiresPermissions("upms:system:export")@RequestMapping(value = "/export2", method = RequestMethod.GET)@ResponseBodypublic String export2(HttpServletResponse response) throws Exception {ExportDao exportDao = new ExportDao();DbUtil dbUtil = new DbUtil();Connection con = null;ExcelUtil excelUtil = new ExcelUtil();try {con = dbUtil.getCon();Workbook wb = new HSSFWorkbook();String headers[] = { "签到⽇期","签到⼈数","请假⼈数"};ResultSet rs = exportDao.exportSign2(con);excelUtil.fillExcelData(rs, wb, headers);ResponseUtil.export( response, wb, "签到综合.xls");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}return null;}}dao层:package com.wazn.learn.dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;public class ExportDao {public ResultSet exportSign(Connection con, String sdate, String edate) throws Exception{String sql="select s.id,u.stunum, FROM_UNIXTIME(s.signtime/1000),s.signdate,u.nickname,pany,u.job from teach_sign s join sys_user u on er_id=u.id ";if(sdate!=null&&sdate!=""){if(edate!=null&&edate!=""){sql+=" where s.signdate>='"+sdate+"' and s.signdate<='"+edate+"' ";}else{sql+=" where s.signdate>='"+sdate+"' ";}}else{if(edate!=null&&edate!=""){sql+=" where s.signdate<='"+edate+"' ";}else{}}StringBuffer sb = new StringBuffer(sql);PreparedStatement pstmt = con.prepareStatement(sb.toString());return pstmt.executeQuery();}public ResultSet exportSign2(Connection con) throws Exception{String sql="select signdate as signdate, count(distinct user_id)-count(leave1) as countuser,count(leave1) as countleave from teach_signs group by signdate";StringBuffer sb = new StringBuffer(sql);PreparedStatement pstmt = con.prepareStatement(sb.toString());return pstmt.executeQuery();}}前台页⾯:两个不同的,传参数根据⽇期和不传参数<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><%@ pageimport="org.springframework.security.core.context.SecurityContextHolder"%><%@ page import="com.wazn.learn.configure.security.CustomerUser"%><%String basePath = request.getContextPath();CustomerUser user = (CustomerUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>选择导出⽇期</title><script type="text/javascript"src="<%=basePath%>/res/js/jquery-1.12.4.min.js"></script><script src="<%=basePath%>/res/layui/layui.js" charset="utf-8"></script><link rel="stylesheet" href="<%=basePath%>/res/layui/css/layui.css"media="all"></head><style type="text/css"></style><body class="gray-bg"><div class="layui-form-item "><label class="layui-form-label">开始⽇期:</label><div class="layui-input-block"><input type="text" class="layui-input" placeholder="请选择开始时间" id="sdate1" name="sdate1"></div></div><div class="layui-form-item"><label class="layui-form-label">结束⽇期:</label><div class="layui-input-block"><input type="text" class="layui-input" placeholder="请选择截⽌时间" id="edate1" name="edate1"></div></div><div class="layui-input-block"><a class="waves-effect waves-button" href="javascript:;" onclick="exportAction()"><button class="layui-btn" style="transform: translateY(-3px);" data-type="reload">导出签到表格</button></a></div><script>//导出Excel⽂件function exportAction(){var s = $('#sdate1').val();var e = $('#edate1').val();var str="sdate='"+s+"'&&edate='"+e+"'";window.open("<%=basePath%>/teach/export?sdate="+s+"&&edate="+e+" ");}e(['table','form','laydate'], function(){var table = layui.table,form = layui.form,laydate = ydate;;laydate.render({elem: '#sdate1',type: 'date'});laydate.render({elem: '#edate1',type: 'date'});});</script></body></html><%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><%@ page import="org.springframework.security.core.context.SecurityContextHolder"%><%@ page import="com.wazn.learn.configure.security.CustomerUser"%><%String basePath = request.getContextPath();CustomerUser user = (CustomerUser)SecurityContextHolder.getContext().getAuthentication().getPrincipal();%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script type="text/javascript" src="<%=basePath%>/res/js/jquery-1.12.4.min.js"></script><script src="<%=basePath%>/res/layui/layui.js" charset="utf-8"></script><link rel="stylesheet" href="<%=basePath%>/res/layui/css/layui.css" media="all"><title>数据报表</title></head><body><div style="margin: 0px; background-color: white; margin: 0 10px;"><blockquote class="layui-elem-quote" style="height: 45px"><div class="layui-col-md2"><a class="waves-effect waves-button" href="javascript:;" onclick="exportAction()"><button class="layui-btn" style="transform: translateY(-3px);" data-type="reload">导出签到表格</button></a></div></blockquote></div><table class="layui-table"lay-data="{url:'<%=basePath%>/teach/course/getsignreport', page:true, id:'idTest', limit: 10,limits: [10,20,30]}"lay-filter="demo"><thead><tr><th lay-data="{field:'signdate', width:'30%',align:'center', sort: true}">签到⽇期</th><th lay-data="{field:'user', width:'30%',align:'center',toolbar: '#bar1'}">签到⼈数</th><th lay-data="{field:'leave', width:'30%',align:'center' ,toolbar: '#bar2'}">请假⼈数</th></tr></thead></table><script>//导出Excel⽂件function exportAction(){window.open("<%=basePath%>/teach/export2");}</script><script type="text/html" id="bar1"><a class="layui-btn layui-btn-primary layui-btn-xs" id="test" lay-event="sign">{{d.countuser}}</a></script><script type="text/html" id="bar2"><a class="layui-btn layui-btn-primary layui-btn-xs" id="test" lay-event="leave">{{d.countleave}}</a></script><script>e(['table','form','laydate','layer'], function(){var table = layui.table,form = layui.form,layer=yer,laydate = ydate;;laydate.render({elem: '#edate',type: 'datetime'});laydate.render({elem: '#sdate',type: 'datetime'});laydate.render({elem: '#sdate1',type: 'date'});laydate.render({elem: '#edate1',type: 'date'});//监听⼯具条table.on('tool(demo)', function(obj){var data = obj.data;if(obj.event === 'sign'){layer.open({title : "签到详情",type : 2,area: ['70%', '80%'],content : "<%=basePath%>/teach/course/signlook?leave=0&date="+data.signdate,})}else if(obj.event==='leave'){layer.open({title : "请假详情",type : 2,area: ['80%', '80%'],content : "<%=basePath%>/teach/course/signlook?leave=1&date="+data.signdate, })}});var $ = layui.$, active = {reload: function(){var demoReload = $('#demoReload');//执⾏重载table.reload('idTest', {page: {curr: 1 //重新从第 1 页开始},where: {name: demoReload.val(),sdate:$('#sdate').val(),edate:$('#edate').val()}});}};$('.demoTable .layui-btn').on('click', function(){var type = $(this).data('type');active[type] ? active[type].call(this) : '';});});</script></body></html>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
new sheet :所创建的sheet页的名字
创建行

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(“new sheet”);
//注意以下的代码很多方法的参数是short 而不是 int 所以需要做一次类型转换 //sheet 创建一行 HSSFRow row = sheet.createRow((short)0);
创建cells(单元格)
HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFRow row = sheet.createRow((short)0); //行创建一个单元格 HSSFCell cell = row.createCell((short)0);

Reader/Writer(处理字符类型的数据的流)

用于读取一个字符文件的类 Reader(基类)InputStreamReader (高级流) FileReader (高级流) Writer(基类) OutputStreamReader (高级流) FileReader (高级流)
用于读取数据源是一个字符串的流 Reader(基类)StringReader (低级流) Writer(基类) StringWriter (低级流)




System.out.println(cell); String src
= "单元格";
// 在所取得单元格中书写内容 cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(src); // Write the output to a file FileOutputStream fileOut = new FileOutputStream("d:\\ww.xls"); wb.write(fileOut); fileOut.close(); } }




java流

I/O流概述 Java.io包中定义了多个流类型来实现输入/ 输出功能 处理字节流的两个基础的类是InputStream和 /OutputStream(处理8位字节流) 处理字符流的两个基础的类是Reader和 Writer(处理16为字节流) 所有其他的流都是一这四个类为基础

使用完流以后必须执行的方法 void close() 用于关闭这个流在使用完流以后,一定要 记得使用该方法将流关闭,释放流所占用 的资源。

流的连接的基本原则是: 高级流域低级流打交道,低级流与I/O 设备、文件打交道,高级流与低级流可以 互相交流。 通过流的连接,可以降低层对设备的流 的操作向程序员隐藏,而程序员只需要关 心上层流的操作。
按照六所处理的“源”的不同 Nhomakorabea可以分 “节点流”和“处理流” 1、节点流(低级流) 面向特定的IO设备(如磁盘或网络)读 /写数据的流 2、处理流(高级流) 处理流的流,实现对一个已经存在的流 的连接和封装,通过所封装的流的功能 调用实现数据读/写的功能


InputStream/ OutputStream(处理字节数据) 输入流 InputStream(低级流)FileInputStream InputStream (低级流) FilterInputStream DataInputStream(高级流) 输出流 OutputStream (低级流) FileOutputStream OutputStream (低级流) FilterOutputStream DataOutputStream (高级流) 读/写流的方式都是以字节为单位进行的
一个生成Excel的实例

public class creatFile { static public void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("d:\\creatFile.xls"); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = wb.createSheet(); wb.setSheetName(0, "first sheet"); HSSFRow row = s.createRow(0); HSSFCell cell = row.createCell((short)0); cell.setCellValue("Hello! This message is generated from POI."); wb.write(fos); fos.close(); } }
如何利用JAVA生成 Excel文件
Java学习小组:吴楠楠
使用Jakarta的POI项目操作Excel文 件

Jakarta的POI项目提供了一组操纵Windows 文档的Java API,如下几个类提供了操作 Excel文件的方便的途径:HSSFWorkbook、 HSSFSheet、HSSFRow、HSSFCell,分别代 表了Excel电子表格中的Book、Sheet、行和 单元格

public class AppendFile { public static void main(String[] args) throws FileNotFoundException, IOException { POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("d:\\test.xls")); // 创建一个新的Excel HSSFWorkbook wb = new HSSFWorkbook(fs); // 在所创建的Excel中新建一个sheet页 HSSFSheet sheet = wb.getSheetAt(0); // 取该sheet页的第13行 HSSFRow row = sheet.getRow(12); // 第8列的单元格 HSSFCell cell = row.getCell((short)7);
设定单元格的值

cell.setCellValue("Hello! Thiswnn test"); 值的类型参数有多中double ,String ,boolean, row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue(“Cell"); row.createCell((short)3).setCellValue(true);
POI对象名称所对应的Excel对象



HSSFWorkbook HSSFSheet HSSFRow HSSFCell
工作簿 工作表 行 单元格
创建一个workbook

创建workbook HSSFWorkbook wb = new HSSFWorkbook();
创建一个sheet

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet1 = wb.createSheet(“new sheet”);
流的分类

按照流的走向分为输入流和输出流 输入流: InputStream(处理字节流) Reader(处理字符流) 所有由InputStream或Reader派生出来的类都有一个 基本的read()方法,用于读取单一的字节或字节数组。 输出流: OutputStream(处理字节流) Writer(处理字符流) 所有由OutputStream或Writer派生出来的类都有一 个基本的write()方法,用于写入单一的字节或字节 数组。
相关文档
最新文档