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文件一、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文件的方法和技巧。
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
需要的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上打不开的问题在做项⽬过程中,涉及到需要导出列表数据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表格的代码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 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表格事先准备:⼯具类: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>。
Java生成Excel文件
利用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.xlsout.close();三、如何设置字体和单元格样式通过HSSFFont和HSSFCellStyle类设置数据在Excel中显示的字体、颜色、大小和单元格样式。
java生成Excel两种方式及导入
本文由我司收集整编,推荐下载,如有疑问,请与我司联系java 生成Excel 两种方式及导入方法一,利用第三方jar 包:jxl.jar无论方法一方法二最后最好用转换成流传给前端。
1 public void createExcel(){2 try{3 //打开文件4 WritableWorkbook workbook= Workbook.createWorkbook(new File(“test.xls”)); 5 //生成名为“第一页”的工作表,参数0 表示这是第一页 6 WritableSheet sheet = workbook.createSheet(“第一页”,0);7 //在Label 对象的构造子中指名单元格位置是第一列第一行(0,0) 8 //以及单元格内容为test 9 Label label = new Label(0,0,”test”); 10 //将定义好的单元格添加到工作表中11 sheet.addCell(label); 12 /*生成一个保存数字的单元格13 * 必须使用Number的完整包路径,否则有语法歧义14 * 单元格位置是第二列,第一行,值为789.123*/ 15 jxl.write.Number number = new jxl.write.Number(1,0,756); 16 17 sheet.addCell(number); 18 19 sheet.insertColumn(1); 20 21 workbook.copySheet(0, “第二页”,1); 22 23 WritableSheet sheet2 = workbook.getSheet(1); 24 Range range = sheet2.mergeCells(0, 0, 0, 8); 25 sheet2.unmergeCells(range); 26 27sheet2.addImage(newWritableImage(5, 5, 10, 20, new File(“F:\\09.png”)));28 29 30 CellView cv = new CellView(); 31 32 WritableCellFormat cf = new WritableCellFormat(); 33 cf.setBackground(Colour.BLUE); 34 35 cv.setFormat(cf); 36 cv.setSize(6000); 37 cv.setDimension(10); 38 39 sheet2.setColumnView(2, cv); 40 41 workbook.write(); 42 workbook.close(); 43 44 }catch(Exception e){} 45 } 同时,读取Excel 中的内容为:1 public void displayExcel(){2 try {3 Workbook wb = Workbook.getWorkbook(new File(“test.xls”));45 Sheet s = wb.getSheet(0);6 System.out.println(s.getCell(0, 0).getContents());7 } catch (BiffException e) {8 // TODO Auto-generated catch block9 e.printStackTrace(); 10 } catch (IOException e) { 11 // TODO Auto-generated catch block 12 e.printStackTrace(); 13 } 14 15 } 方法二,利用jar 包:poi-3.2-FINAL-20081019.jar1 public void exportExcel(){23 HSSFWorkbook wb = new HSSFWorkbook();//创。
java生成excel报表文件示例
java⽣成excel报表⽂件⽰例此次简单的操作将数据从数据库导出⽣成excel报表以及将excel数据导⼊数据库⾸先建⽴数据库的连接池:package jdbc;import java.io.FileInputStream;import java.sql.Connection;import java.util.Properties;import mons.dbcp.BasicDataSource;public class BaseDAO {private static BasicDataSource ds;static{try {//1.读取配置⽂件conf.properties,采⽤java.util.Properties来读取Properties p=new Properties();//2.通过⽂件流读取并解析配置⽂件内容,本地数据库⽤的mysql,所以把配置⽂件mysql的配置放开,其他数据库配置注释 p.load(new FileInputStream("src/jdbc.properties"));String driverName=p.getProperty("jdbc.driverClassName");//获取驱动名称String url=p.getProperty("jdbc.url");//获取数据库的urlString user=p.getProperty("ername");//⽤户名String password=p.getProperty("jdbc.password");//密码int maxActive=Integer.parseInt(p.getProperty("jdbc.maxActive"));//获取最⼤连接数int maxWait=Integer.parseInt(p.getProperty("jdbc.maxWait"));//获取最⼤等待时间//3.创建⼀个连接池ds=new BasicDataSource();ds.setDriverClassName(driverName);//设置驱动名称ds.setUrl(url);//设置数据库地址ds.setUsername(user);//设置⽤户名ds.setPassword(password);//设置密码ds.setMaxActive(maxActive);//设置最⼤连接数ds.setMaxWait(maxWait);//设置最⼤等待时间} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection() throws Exception {try {return ds.getConnection();} catch (Exception e) {System.out.println("连接数据库异常");throw e;}}public static void close(Connection conn){if(conn!=null){try {conn.close();} catch (Exception e) {e.printStackTrace();}}}}⽣成与数据库相对应的java实体类:package entity;public class Test {private String a;private String b;private String c;private String d;private String e;private String f;private String g;private String h;private String i;private String j;public String getA() {return a;}public void setA(String a) {this.a = a;}public String getB() {return b;}public void setB(String b) {this.b = b;}public String getC() {return c;}public void setC(String c) {this.c = c;}public String getD() {return d;}public void setD(String d) {this.d = d;}public String getE() {return e;}public void setE(String e) {this.e = e;}public String getF() {return f;}public void setF(String f) {this.f = f;}public String getG() {return g;}public void setG(String g) {this.g = g;}public String getH() {return h;}public void setH(String h) {this.h = h;}public String getI() {return i;}public void setI(String i) {this.i = i;}public String getJ() {return j;}public void setJ(String j) {this.j = j;}}将excel表格数据插⼊数据库,先读取excel表格数据package readExcel;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import ermodel.HSSFCell;import ermodel.HSSFWorkbook;import ermodel.Cell;import ermodel.CellStyle;import ermodel.Row;import ermodel.Sheet;import ermodel.Workbook;import ermodel.XSSFWorkbook;public class ReadExcel {/*** @param args* @throws IOException*/public List<List<String>> readExcel(File file) throws IOException{List<List<String>> list=new ArrayList<List<String>>();if(!file.exists()){System.out.println("⽂件不存在");}else{InputStream fis=new FileInputStream(file);list=parseExcel(file,fis);}return list;}public List<List<String>> parseExcel(File file,InputStream fis) throws IOException{ Workbook workbook=null;List<List<String>> list=new ArrayList<List<String>>();if(file.toString().endsWith("xls")){workbook=new HSSFWorkbook(fis);}else if(file.toString().endsWith("xlsx")){workbook=new XSSFWorkbook(fis);}else{System.out.println("⽂件不是excel⽂档类型,此处⽆法读取");}for(int i=0;i<workbook.getNumberOfSheets();i++){Sheet sheet=workbook.getSheetAt(i);if(sheet!=null){int lastRow=sheet.getLastRowNum();//获取表格中的每⼀⾏for(int j=0;j<=lastRow;j++){Row row=sheet.getRow(j);short firstCellNum=row.getFirstCellNum();short lastCellNum=row.getLastCellNum();List<String> rowsList=new ArrayList<String>();if(firstCellNum!=lastCellNum){//获取每⼀⾏中的每⼀列for(int k=firstCellNum;k<lastCellNum;k++){Cell cell=row.getCell(k);if(cell==null){rowsList.add("");}else{rowsList.add(chanegType(cell));}}}else{System.out.println("该表格只有⼀列");}list.add(rowsList);}}}return list;}public String chanegType(Cell cell){String result = new String();switch (cell.getCellType()) { //获取单元格的类型case HSSFCell.CELL_TYPE_NUMERIC:// 数字类型if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){ //如果是数值类型short format = cell.getCellStyle().getDataFormat(); //获取这个单元的类型对应的数值SimpleDateFormat sdf = null;if(format == 14 || format == 31 || format == 57 || format == 58){ //如果数值为14,31,57,58其中的⼀种 //对应的⽇期格式为 2016-03-01这种形式,sdf = new SimpleDateFormat("yyyy-MM-dd");double value = cell.getNumericCellValue();Date date = ermodel.DateUtil.getJavaDate(value);result = sdf.format(date);//得到yyyy-MM-dd这种格式⽇期}else if (format == 20 || format == 32) {//时间sdf = new SimpleDateFormat("HH:mm");double value = cell.getNumericCellValue();Date date = ermodel.DateUtil.getJavaDate(value);result = sdf.format(date);//得到HH:mm} else {double value = cell.getNumericCellValue();CellStyle style = cell.getCellStyle();DecimalFormat dataformat = new DecimalFormat();String temp = style.getDataFormatString();// 单元格设置成常规if (temp.equals("General")) {dataformat.applyPattern("#");}result = dataformat.format(value); //得到单元格数值}}break;case HSSFCell.CELL_TYPE_STRING:// String类型result = cell.getRichStringCellValue().toString();break;case HSSFCell.CELL_TYPE_BLANK:result = "";default:result = "";break;}return result;}}将读取到的excel表格数据插⼊到数据库中去package importdata;import java.io.File;import java.sql.Connection;import java.sql.PreparedStatement;import java.util.ArrayList;import java.util.List;import entity.Test;import readExcel.ReadExcel;import jdbc.BaseDAO;public class inportData {public static void main(String[] args) throws Exception {// TODO Auto-generated method stubList<List<String>> list = new ArrayList<List<String>>();ReadExcel readExcel=new ReadExcel();File file=new File("d:/test.xlsx");list=readExcel.readExcel(file);Test test=new Test();Connection conn=BaseDAO.getConnection();PreparedStatement ps=null;int i=1;for(List<String> rowlist:list){if(rowlist!=null){test.setA(rowlist.get(0).toString());test.setB(rowlist.get(1).toString());test.setC(rowlist.get(2).toString());test.setD(rowlist.get(3).toString());test.setE(rowlist.get(4).toString());test.setF(rowlist.get(5).toString());test.setG(rowlist.get(6).toString());test.setH(rowlist.get(7).toString());test.setI(rowlist.get(8).toString());test.setJ(rowlist.get(9).toString());String sql="insert into TEST(A,B,C,D,E,F,G,H,I,J) values(?,?,?,?,?,?,?,?,?,?)";ps=conn.prepareStatement(sql);ps.setString(1,test.getA());ps.setString(2,test.getB());ps.setString(3,test.getC());ps.setString(4,test.getD());ps.setString(5,test.getE());ps.setString(6,test.getF());ps.setString(7,test.getG());ps.setString(8,test.getH());ps.setString(9,test.getI());ps.setString(10,test.getJ());int n=ps.executeUpdate();if(n!=1){System.out.println("数据插⼊数据库失败");}System.out.println("第"+i+"条数据插⼊成功");System.out.println();i++;}}}}将数据库中的数据查询出来并以excel表格的形式⽣成报表package export;import java.io.FileOutputStream;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import ermodel.HSSFWorkbook;import ermodel.Cell;import ermodel.Row;import ermodel.Sheet;import ermodel.Workbook;import ermodel.XSSFWorkbook;import entity.Test;import jdbc.BaseDAO;public class Export {public static void createExcel(List<Test> list){FileOutputStream fos=null;Workbook workbook=new XSSFWorkbook();Sheet sheet=workbook.createSheet("测试⽂件");String[] title={"第⼀列","第⼆列","第三列","第四列","第五列","第六列","第七列","第⼋列","第九列","第⼗列"}; Row row=sheet.createRow((short)0);int i=0;for(String s:title){Cell cell=row.createCell(i);cell.setCellValue(s);i++;}int j=1;for(Test t:list){//创建第⼆⾏Row rowData=sheet.createRow((short)j);//第⼀列数据Cell cell0=rowData.createCell((short)0);cell0.setCellValue(t.getA());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第⼆列数据Cell cell1=rowData.createCell((short)1);cell1.setCellValue(t.getB());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第三列数据Cell cell2=rowData.createCell((short)2);cell2.setCellValue(t.getC());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第四列数据Cell cell3=rowData.createCell((short)3);cell3.setCellValue(t.getD());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第五列数据Cell cell4=rowData.createCell((short)4);cell4.setCellValue(t.getE());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第六列数据Cell cell5=rowData.createCell((short)5);cell5.setCellValue(t.getF());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第七列数据Cell cell6=rowData.createCell((short)6);cell6.setCellValue(t.getG());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第⼋列数据Cell cell7=rowData.createCell((short)7);cell7.setCellValue(t.getH());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第九列数据Cell cell8=rowData.createCell((short)8);cell8.setCellValue(t.getI());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);//第⼗列数据Cell cell9=rowData.createCell((short)9);cell9.setCellValue(t.getJ());//设置单元格的宽度sheet.setColumnWidth((short)0, (short)10000);j++;}try {//导出数据库⽂件保存路径fos=new FileOutputStream("D:/export.xlsx");/*if(fos.toString().endsWith("xlsx")){workbook=new XSSFWorkbook();}else if(fos.toString().endsWith("xls")){workbook=new HSSFWorkbook();}*///将⼯作簿写⼊⽂件workbook.write(fos);System.out.println("导出⽂件成功");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("导出⽂件失败");}}public static void main(String[] args) throws Exception { //连接数据库Connection conn=BaseDAO.getConnection();PreparedStatement ps=null;String sql="select * from TEST";//执⾏sql语句ps=conn.prepareStatement(sql);//查询数据库之后得到的结果ResultSet rs=ps.executeQuery();List<Test> list=new ArrayList<Test>();//遍历查询结果while(rs.next()){Test test=new Test();test.setA(rs.getString("A"));test.setB(rs.getString("B"));test.setC(rs.getString("C"));test.setD(rs.getString("D"));test.setE(rs.getString("E"));test.setF(rs.getString("F"));test.setG(rs.getString("G"));test.setH(rs.getString("H"));test.setI(rs.getString("I"));test.setJ(rs.getString("J"));list.add(test);}createExcel(list);}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
Java实现读取及生成Excel文件的方法
Java实现读取及⽣成Excel⽂件的⽅法本⽂实例讲述了Java实现读取及⽣成Excel⽂件的⽅法。
分享给⼤家供⼤家参考,具体如下:⼀、读取Excel⽂件需要先下载poi-3.0.1-FINAL-20070705.jar(点击此处本站下载。
)ExcelExamRead.javaimport java.io.File;import java.io.FileInputStream;import java.io.IOException;import ermodel.HSSFCell;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;public class ExcelExamRead {/** 读Excel⽂件内容 */public void showExcel(String excelName) {File file = new File(excelName);FileInputStream in = null;try {// 创建对Excel⼯作簿⽂件的引⽤in = new FileInputStream(file);HSSFWorkbook hwb = new HSSFWorkbook(in);HSSFSheet sheet = hwb.getSheet("myFirstExcel");// 根据指定的名字来引⽤此Excel中的有效⼯作表// 读取Excel ⼯作表的数据System.out.println("下⾯是Excel⽂件" + file.getAbsolutePath() + "的内容:");HSSFRow row = null;HSSFCell cell = null;int rowNum = 0;// ⾏标int colNum = 0;// 列标for (; rowNum < 9; rowNum++) {// 获取第rowNum⾏row = sheet.getRow((short) rowNum);for (colNum = 0; colNum < 5; colNum++) {cell = row.getCell((short) colNum);// 根据当前⾏的位置来创建⼀个单元格对象System.out.print(cell.getStringCellValue() + "\t");// 获取当前单元格中的内容}System.out.println(); // 换⾏}in.close();} catch (Exception e) {System.out.println("读取Excel⽂件" + file.getAbsolutePath() + "失败:" + e);} finally {if (in != null) {try {in.close();} catch (IOException e1) {}}}}public static void main(String[] args) {ExcelExamRead excel = new ExcelExamRead();String excelName = "D:/ExcelExamRead.xls";excel.showExcel(excelName);}}⼆、⽣成Excel⽂件ExcelExamWrite.java:import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import ermodel.HSSFCell;import ermodel.HSSFCellStyle;import ermodel.HSSFFont;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;import org.apache.poi.hssf.util.Region;//创建Excel⽂件public class ExcelExamWrite {// 新建⼀个Excel⽂件,⾥⾯添加5⾏5列的内容,另外添加⼀个合并2⾏5列的⼤单元格以及⼀个合并2⾏1列的5个合并单元格。
java读取数据库生成excel并实现下载
//第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow(0);
//第四步,创建单元格,并设置值表头设置表头居中
HSSFCellStyle style =wb.createCellStyle();
ermodel.HSSFSheet;
ermodel.HSSFWorkbook;
publicclassExcelExport {
//第一步,创建一个webbook,对应一个Excel文件
publicHSSFWorkbook generateExcel() {
returnscore;
}
publicvoidsetScore(intscore) {
this.score= score;
}
}
(
publicbooleanexport(String eId,HttpServletResponse response){
try{
List<GradeExcelData> list =cardDao.getExcelData(eId);
export.export(wb, response);
returntrue;
}catch(Exception e) {
//TODOAuto-generated catch block
e.printStackTrace();
returnfalse;
}
}
row.createCell(1).setCellValue(data.getName());
Java生成Excel实例
WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
wsheet.addCell(new Label(1, 0, tmptitle, wcfFC));
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD,
false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfont);
wcfFC.setBackground(Colour.AQUA);
2、在web.xml中注册
<filter>
<filter-name>ResponseOverrideFilter</filter-name>
<filter-class>
org.displaytag.filter.ResponseOverrideFilter
</filter-class>
<filter-name>ResponseOverrideFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
Java生成Excel文件
Java生成Excel文件Java是一种功能强大的编程语言,它提供了许多库和工具,可以用来生成Excel文件。
在本文中,我将详细介绍如何使用Java生成Excel文件,包括创建工作簿、工作表和单元格,以及填充数据和设置样式。
1. 导入所需的库在开始之前,我们需要导入Apache POI库,它是一个流行的Java库,用于处理Microsoft Office格式的文件,包括Excel。
您可以从Apache POI的官方网站上下载并导入所需的JAR文件。
2. 创建工作簿和工作表要生成一个Excel文件,首先需要创建一个工作簿对象。
工作簿是Excel文件的顶级容器,其中包含一个或者多个工作表。
以下是创建一个工作簿的示例代码:```javaWorkbook workbook = new XSSFWorkbook(); // 创建一个新的Excel工作簿```接下来,我们可以使用工作簿对象创建一个工作表。
工作表是Excel文件中的一个表格,用于组织数据。
以下是创建一个工作表的示例代码:```javaSheet sheet = workbook.createSheet("Sheet1"); // 创建一个名为"Sheet1"的工作表```3. 创建单元格并填充数据在工作表中,数据存储在单元格中。
要创建一个单元格并填充数据,可以使用以下示例代码:```javaRow row = sheet.createRow(0); // 创建第一行Cell cell = row.createCell(0); // 创建第一个单元格cell.setCellValue("Hello, World!"); // 设置单元格的值为"Hello, World!"```在上面的示例中,我们创建了一个名为"Hello, World!"的单元格,并将其放在第一行的第一个位置。
JAVA实现文件导出Excel
JAVA实现⽂件导出Exceljava实现Excel数据导出:⽬前,⽐较常⽤的实现Java导⼊、导出Excel的技术有两种Jakarta POI和Java ExcelJakarta POI 是⼀套⽤于访问微软格式⽂档的Java API。
Jakarta POI有很多组件组成,其中有⽤于操作Excel格式⽂件的HSSF和⽤于操作Word的HWPF,在各种组件中⽬前只有⽤于操作Excel的HSSF相对成熟。
官⽅主页,API⽂档Jakarta POI HSSF API组件HSSF(⽤于操作Excel的组件)提供给⽤户使⽤的对象在ermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。
有以下⼏种对象:2.3 基本操作步骤⾸先,理解⼀下⼀个Excel的⽂件的组织形式,⼀个Excel⽂件对应于⼀个workbook(HSSFWorkbook),⼀个workbook可以有多个sheet(HSSFSheet)组成,⼀个sheet是由多个row(HSSFRow)组成,⼀个row是由多个cell(HSSFCell)组成。
基本操作步骤:下⾯来看⼀个动态⽣成Excel⽂件的例⼦://创建HSSFWorkbook对象HSSFWorkbook wb = new HSSFWorkbook();//创建HSSFSheet对象HSSFSheet sheet = wb.createSheet("sheet0");//创建HSSFRow对象HSSFRow row = sheet.createRow(0);//创建HSSFCell对象HSSFCell cell=row.createCell(0);//设置单元格的值cell.setCellValue("单元格中的中⽂");//输出Excel⽂件FileOutputStream output=new FileOutputStream("d:\\workbook.xls");wkb.write(output);output.flush();HSSF读取⽂件同样还是使⽤这⼏个对象,只是把相应的createXXX⽅法变成了getXXX⽅法即可。
JAVA生成EXCEL
JAVA⽣成EXCELimport java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;import ermodel.HSSFCell;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;import org.apache.poi.ss.util.CellRangeAddress;public class ExcelUtils {/*** 在指定⽂件⽬录⽣成Excel* @param firstRowName Excel第⼀⾏的总标题* @param titils 每⼀列的标题* @param data 数据* @param path 存放路径* @param excelName Excel⽂件名称* @throws Exception*/public static void createExcel(String firstRowName,List<String> titils,List<List<String>> data,String path) throws Exception { //创建HSSFWorkbook对象(excel的⽂档对象)HSSFWorkbook wb = new HSSFWorkbook();//建⽴新的sheet对象(excel的表单)HSSFSheet sheet = wb.createSheet("sheet1");//在sheet⾥创建第⼀⾏,参数为⾏索引(excel的⾏),可以是0~65535之间的任何⼀个HSSFRow row1 = sheet.createRow(0);//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何⼀个HSSFCell cell = row1.createCell(0);//设置单元格内容cell.setCellValue(firstRowName);//合并单元格CellRangeAddress构造参数依次表⽰起始⾏,截⾄⾏,起始列,截⾄列sheet.addMergedRegion(new CellRangeAddress(0,0,0,titils.size()-1));//在sheet⾥创建第⼆⾏(标题栏)HSSFRow row2 = sheet.createRow(1);for (int i = 0; i < titils.size(); i++) {row2.createCell(i).setCellValue(titils.get(i));}for (int i = 0; i < data.size(); i++) {HSSFRow datarow = sheet.createRow(i+2);for (int j = 0; j < data.get(i).size(); j++) {datarow.createCell(j).setCellValue(data.get(i).get(j));}}FileOutputStream output=new FileOutputStream(path);wb.write(output);//写⼊磁盘output.close();}//测试public static void main(String[] args) throws Exception {List<String> titils = new ArrayList<String>();titils.add("名称");titils.add("⼤⼩");titils.add("重量");titils.add("体重");titils.add("长度");titils.add("宽度");List<List<String>> data = new ArrayList<List<String>>();for (int i = 0; i < 10; i++) {List<String> da = new ArrayList<String>();da.add("21121");da.add("12");da.add("212");da.add("212");da.add("1212");da.add("212");da.add("1212");data.add(da);}createExcel("111", titils, data, "F:/aaaaaaaa.xlsx"); }}。
java生成excel(多级表头)导出
java⽣成excel(多级表头)导出依赖⼯具包<dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.5</version></dependency></dependencies>该⼯具包是对 Apache POI包的分装private void export(HttpServletResponse response, String fileName, List<?> projects, List<SummarizeDownloadColumns> columns) throws IOException { ExcelWriter bigWriter = ExcelUtil.getBigWriter();//创建⼀⾏空表头占个位置bigWriter.writeHeadRow(new LinkedList());//创建需要展⽰的的⼆级表头,{filedName,中⽂名}int lastCol = 0;for (int i = 0; i < columns.size(); i++) {if (columns.get(i).getChildren() != null) {for (int j = 0; j < columns.get(i).getChildren().size(); j++) {bigWriter.addHeaderAlias(columns.get(i).getChildren().get(j).getProp(), columns.get(i).getChildren().get(j).getLabel() + columns.get(i).getProp()); bigWriter.setColumnWidth(lastCol++, 30);}}}//根据需要合并添加第⼀列表头bigWriter.merge(0, 1, 0, 0, columns.get(0).getLabel(), true);bigWriter.merge(0, 0, 1, 14, "第⼀类(个⼈)", true);bigWriter.merge(0, 0, 15, 28, "第⼀类(企业)", true);bigWriter.merge(0, 0, 29, 42, "第⼆类(个⼈)", true);bigWriter.merge(0, 0, 43, 56, "第⼆类(企业)", true);bigWriter.merge(0, 0, 57, 64, "总计项", true);// 只导出配置好的列名bigWriter.setOnlyAlias(true);bigWriter.write(projects, true);StyleSet styleSet = bigWriter.getStyleSet();styleSet.setWrapText();response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("filename", URLEncoder.encode(fileName + ".xlsx", "UTF-8"));ServletOutputStream out = response.getOutputStream();bigWriter.flush(out, true);bigWriter.close();IoUtil.close(out);}导出效果动态⽣成模板(只需要表头)String fileName = "sdjhds";try {ExcelWriter bigWriter = ExcelUtil.getBigWriter();List list = new ArrayList();list.add("表头1");list.add("表头2");bigWriter.writeHeadRow(list);response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8") + ".xls");response.setHeader("filename", URLEncoder.encode(fileName, "utf-8") + ".xls");response.setHeader("Pragma", "no-cache");response.setHeader("Content-type", "application/octet-stream;charset=UTF-8");ServletOutputStream out = response.getOutputStream();bigWriter.flush(out, true);bigWriter.close();IoUtil.close(out);} catch (IOException e) {e.printStackTrace();}。
Java上传下载excel、解析Excel、生成Excel的问题
在软件开发过程中难免需要批量上传与下载,生成报表保存也是常有之事,最近集团门户开发用到了Excel模版下载,Excel生成,圆满完成,对这一知识点进行整理,资源共享,有不足之处还望批评指正,文章结尾提供了所需jar包的下载,方便大伙使用,下面言归正传!1.Excel的下载1)Action中:添加响应事件,通过getRealPath获得工程路径,与jsp中获得request.getContextPath()效果相同,fileName为要下载的文件名,经过拼接filePath是xls文件的绝对路径,调用工具类DownLoadUtil中的downLoadUtil 方法;public ActionForward downLoadExcelModel(ActionMapping actionMapping,ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception {String path =request.getSession().getServletContext().getRealPath("/resources");String fileName = "成员模版.xls";String filePath = path + "\\" + fileName;DownLoadUtil.downLoadFile(filePath, response, fileName, "xls");return null;}2)工具类DownLoadUtil中:public static boolean downLoadFile(String filePath,HttpServletResponse response, String fileName, String fileType)throws Exception {File file = new File(filePath); //根据文件路径获得File文件//设置文件类型(这样设置就不止是下Excel文件了,一举多得)if("pdf".equals(fileType)){response.setContentType("application/pdf;charset =GBK");}else if("xls".equals(fileType)){response.setContentType("application/msexcel;charset=GBK");}else if("doc".equals(fileType)){response.setContentType("application/msword;char set=GBK");}//文件名response.setHeader("Content-Disposition", "attachment;filename=\""+ new String(fileName.getBytes(), "ISO8859-1") + "\"");response.setContentLength((int) file.length());byte[] buffer = new byte[4096];// 缓冲区BufferedOutputStream output = null;BufferedInputStream input = null;try {output = newBufferedOutputStream(response.getOutputStream());input = new BufferedInputStream(new FileInputStream(file));int n = -1;//遍历,开始下载while ((n = input.read(buffer, 0, 4096)) > -1) {output.write(buffer, 0, n);}output.flush(); //不可少response.flushBuffer();//不可少} catch (Exception e) {//异常自己捕捉} finally {//关闭流,不可少if (input != null)input.close();if (output != null)output.close();}return false;}这样,就可以完成文件的下载,java程序将文件以流的形式,保存到客户本机!!2.Excel的上传与解析(此处方面起见,ExcelN行两列,以为手机号,另一为短号)对于数据批量上传,就涉及到文件的上传与数据的解析功能,此处运用了第三方jar包,方便快捷。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建行
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()方法,用于写入单一的字节或字节 数组。