package cn.vit.auto.proto.utils;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.hibernate.Session;
import cn.vit.auto.proto.entity.BookDetails;
/**
*
* @author Aubergine_kang
*
*/
public class DownLoadUtil {
private static String userName = "";
private static double sumCount = 0;
//单元格样式
private static CellStyle cs1;
private static CellStyle cs2;
private static CellStyle cs3;
//创建单元格样式
public static void newCellStyle(Workbook Book_details) {
cs1 = Book_details.createCellStyle();
cs1.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
cs1.setFillPattern(CellStyle.SOLID_FOREGROUND);
cs2 = Book_details.createCellStyle();
cs2.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
cs2.setFillPattern(CellStyle.SOLID_FOREGROUND);
cs3 = Book_details.createCellStyle();
cs3.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
cs3.setFillPattern(CellStyle.SOLID_FOREGROUND);
}
// 第一个sheet需要的list从数据库读取
public static List<BookDetails> getDownLoadList(Session session) {
String sql = " select id,Book,user,count,month from Book_details "
+ " where month(month) = month(SYSDATE()) "
+ " group by user,Book";
List<BookDetails> list = (List<BookDetails>) session
.createSQLQuery(sql).addEntity(BookDetails.class).list();
return list;
}
// 写第一个sheet的内容
public static void writeDownLoadExcel(List<BookDetails> list, Sheet sheet,
Session session) throws IOException {
writeExcelHead(sheet);
for (int i = 0; i < list.size(); i++) {
BooksDetails gds = (BooksDetails) list.get(i);
String name = gds.getUser().getUserName();
int rows = sheet.getPhysicalNumberOfRows();
Row row = sheet.createRow(rows);
row.createCell(0).setCellValue(userName);
row.getCell(0).setCellStyle(cs3);
row.createCell(1).setCellValue(userName2);
row.getCell(1).setCellStyle(cs2);
session.flush();
session.clear();
}
}
}
}
// 写第一个sheet的头部
private static void writeExcelHead(Sheet sheet) {
Row header = sheet.createRow(0);
header.createCell(0).setCellValue("name");
header.createCell(1).setCellValue("Book");
header.createCell(2).setCellValue("count");
header.createCell(3).setCellValue("sum");
header.getCell(0).setCellStyle(cs1);
header.getCell(1).setCellStyle(cs1);
header.getCell(2).setCellStyle(cs1);
header.getCell(3).setCellStyle(cs1);
}
//弹出保存对话框,选择路径进行保存
private static void tearDown(HttpServletResponse response,
Workbook Book_details) throws IOException {
response.reset();
response.setContentType("application/x-msdownload");
Date d = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM");
String name = sf.format(d) + "BookApply.xlsx";
response.setHeader("Content-Disposition", "attachment; filename="
+ new String(name.getBytes(), "iso8859-1"));
ServletOutputStream sos = response.getOutputStream();
Book_details.write(sos);
sos.flush();
sos.close();
}
//将各个步骤串起来,提交给外部调用
public static void downLoad(Session session, HttpServletResponse response) {
Workbook Book_details = new XSSFWorkbook();
newCellStyle(Book_details);
String sheetName = "BookDetails";
Sheet sheet = Book_details.createSheet(sheetName);
List<BookDetails> list = getDownLoadList(session);
try {
writeDownLoadExcel(list, sheet, session);
tearDown(response, Book_details);
} catch (IOException e) {
e.printStackTrace();
}
}
}
用到的相关的jar包在附件里
分享到:
相关推荐
使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...
测试用例通常包含一些示例代码,演示如何使用Apache POI API来读取、写入或操作Excel文件。这些示例可以帮助开发者快速理解和上手。 以下是使用Apache POI 3.9读取Excel的基本步骤: 1. 引入依赖:确保项目中包含...
Java中的Apache POI库是一个强大的工具,专门用于处理Microsoft Office格式的文件,特别是Excel的.xls和.xlsx文件。这个库使得开发者能够用纯Java代码来创建、修改和读取Excel文件,极大地扩展了Java在电子表格处理...
标题中的“poi读取xlsx和xls”指的是使用Apache POI库来处理Microsoft Office的两种不同文件格式:Excel的.xlsx(基于OpenXML标准)和.xls(基于老版的BIFF格式)。Apache POI是一个流行的Java库,它允许开发人员在...
本工具类利用POI库,结合Java和MySQL数据库,实现从数据库查询数据并将其高效地写入到Excel文件中的功能。这一过程对于数据导出、报表生成或者数据分析场景非常常见。 【描述】:此项目基于Java 1.8环境,采用Maven...
1、POI_EXCEL包下分别有两个类,一个是读取excel内容,一个是想excel写入内容 2、cn.itcast包下的所有包,是为了实现从excel写入到数据库中,和从数据库写入到excel中 注意事项: 1、需要导入maven工程 2、使用...
它提供了丰富的API,能够实现对Excel文件的读写操作,包括读取和写入数据,设置单元格样式,处理公式等。通过`XSSFWorkbook`、`XSSFSheet`、`XSSFRow`和`XSSFCell`等类,我们可以方便地进行Excel文件的操作。在实际...
在Java中,如果你需要生成或操作Excel文件,尤其是.xlsx格式(这是Excel 2007及以上版本使用的Open XML格式),那么Apache POI库就是首选工具。下面将详细介绍如何使用Java POI库来生成Excel(xlsx)文件。 首先,...
这个例子将讲解如何使用Apache POI库来读取xls和xlsx格式的文件。Apache POI是一个流行的开源Java API,专为Microsoft Office文件格式提供读写功能,包括Excel。 首先,要开始这个项目,你需要在你的Android工程中...
本主题将深入探讨如何使用POI读取.xls(BIFF8格式,Excel 97-2003)和.xlsx(OOXML格式,Excel 2007及以上版本)两种不同格式的Excel文件。 首先,我们需要导入必要的库。在上述的文件列表中,我们看到有poi-3.9....
要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...
总的来说,这个项目展示了如何在Java环境中,结合Spring Boot的便利性,利用MyBatis进行数据库操作,借助Apache POI处理Excel文件,以及Thymeleaf生成动态页面,实现数据的导入导出功能。这是一个综合性的Java Web...
在这个项目中,我们有一个名为"C++实现从TXT或Excel读取数据写入数据库小工具"的实用程序,它利用C++编程语言来实现数据的读取和存储功能。这个工具能够帮助开发者高效地处理来自文本文件(如TXT)和电子表格文件...
2. 使用POI读取Excel文件,将数据存储到List或其他数据结构中。 3. 配置DBCP连接池,创建DataSource实例。 4. 创建线程池,例如使用ThreadPoolExecutor初始化ExecutorService。 5. 将Excel数据分割为多个部分,每...
在Java开发中,有时我们需要将数据库中的数据导出到Excel文件,或者从Excel文件...通过正确理解和使用POI库,你可以轻松地实现数据的导入导出,提升工作效率。记得在项目中引入正确的jar包,以确保所有功能的正常运行。
本教程将详细介绍如何利用Apache POI库实现从数据库导出数据到Excel的工作流程。 首先,我们需要理解Apache POI的基本概念。POI提供了HSSF(Horizontally Stored Spreadsheet Format)用于处理老版本的Excel文件(....
Java POI库是用于处理Microsoft Office格式文件的强大工具,尤其...通过解析Excel数据并将其写入数据库,我们可以实现数据的高效迁移或自动化处理,大大提升了工作效率。在实现过程中,务必注意代码的健壮性和安全性。
标题 "POI读取Excel带格式数据" 涉及到的是Apache POI库在Java中的使用,这个库允许开发者处理Microsoft Office格式的文件,包括Excel。Apache POI是一个开源项目,提供了API来读取、写入和修改Excel文档。在本场景...