`
Aubergine_kang
  • 浏览: 264235 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

poi实现读取数据库,新建xlsx,写入数据库数据,设置样式,选择路径,文件下载(原创)

 
阅读更多

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文件并写入数据库

    使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...

    poi 3.9读取excel xls xlsx 有jar包

    测试用例通常包含一些示例代码,演示如何使用Apache POI API来读取、写入或操作Excel文件。这些示例可以帮助开发者快速理解和上手。 以下是使用Apache POI 3.9读取Excel的基本步骤: 1. 引入依赖:确保项目中包含...

    java poi技术读取xls,xlsx文件所需的完整jar包

    Java中的Apache POI库是一个强大的工具,专门用于处理Microsoft Office格式的文件,特别是Excel的.xls和.xlsx文件。这个库使得开发者能够用纯Java代码来创建、修改和读取Excel文件,极大地扩展了Java在电子表格处理...

    poi读取xlsx和xls

    标题中的“poi读取xlsx和xls”指的是使用Apache POI库来处理Microsoft Office的两种不同文件格式:Excel的.xlsx(基于OpenXML标准)和.xls(基于老版的BIFF格式)。Apache POI是一个流行的Java库,它允许开发人员在...

    POI从数据库查询数据写入Excel工具类

    本工具类利用POI库,结合Java和MySQL数据库,实现从数据库查询数据并将其高效地写入到Excel文件中的功能。这一过程对于数据导出、报表生成或者数据分析场景非常常见。 【描述】:此项目基于Java 1.8环境,采用Maven...

    Java用POI API实现对Excel表的读取与写入,包含对数据库的读写,亲测有效

    1、POI_EXCEL包下分别有两个类,一个是读取excel内容,一个是想excel写入内容 2、cn.itcast包下的所有包,是为了实现从excel写入到数据库中,和从数据库写入到excel中 注意事项: 1、需要导入maven工程 2、使用...

    POI解析xlsx文件

    它提供了丰富的API,能够实现对Excel文件的读写操作,包括读取和写入数据,设置单元格样式,处理公式等。通过`XSSFWorkbook`、`XSSFSheet`、`XSSFRow`和`XSSFCell`等类,我们可以方便地进行Excel文件的操作。在实际...

    Java POI 生成Excel(xlsx)文件

    在Java中,如果你需要生成或操作Excel文件,尤其是.xlsx格式(这是Excel 2007及以上版本使用的Open XML格式),那么Apache POI库就是首选工具。下面将详细介绍如何使用Java POI库来生成Excel(xlsx)文件。 首先,...

    一个简单的基于Android读取xls和xlsx文件的例子

    这个例子将讲解如何使用Apache POI库来读取xls和xlsx格式的文件。Apache POI是一个流行的开源Java API,专为Microsoft Office文件格式提供读写功能,包括Excel。 首先,要开始这个项目,你需要在你的Android工程中...

    java使用poi读取xls格式和xlsx格式的excel文件

    本主题将深入探讨如何使用POI读取.xls(BIFF8格式,Excel 97-2003)和.xlsx(OOXML格式,Excel 2007及以上版本)两种不同格式的Excel文件。 首先,我们需要导入必要的库。在上述的文件列表中,我们看到有poi-3.9....

    利用POI读取excel写入到word

    要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    总的来说,这个项目展示了如何在Java环境中,结合Spring Boot的便利性,利用MyBatis进行数据库操作,借助Apache POI处理Excel文件,以及Thymeleaf生成动态页面,实现数据的导入导出功能。这是一个综合性的Java Web...

    C++实现从TXT或Excel读取数据写入数据库小工具

    在这个项目中,我们有一个名为"C++实现从TXT或Excel读取数据写入数据库小工具"的实用程序,它利用C++编程语言来实现数据的读取和存储功能。这个工具能够帮助开发者高效地处理来自文本文件(如TXT)和电子表格文件...

    批量读取excel文件并利用dbcp连接池写入数据库

    2. 使用POI读取Excel文件,将数据存储到List或其他数据结构中。 3. 配置DBCP连接池,创建DataSource实例。 4. 创建线程池,例如使用ThreadPoolExecutor初始化ExecutorService。 5. 将Excel数据分割为多个部分,每...

    JAVA实现数据库数据导入导出到Excel(POI)所需jar包

    在Java开发中,有时我们需要将数据库中的数据导出到Excel文件,或者从Excel文件...通过正确理解和使用POI库,你可以轻松地实现数据的导入导出,提升工作效率。记得在项目中引入正确的jar包,以确保所有功能的正常运行。

    利用POI实现数据库导出Excel

    本教程将详细介绍如何利用Apache POI库实现从数据库导出数据到Excel的工作流程。 首先,我们需要理解Apache POI的基本概念。POI提供了HSSF(Horizontally Stored Spreadsheet Format)用于处理老版本的Excel文件(....

    java POI 通过MultipartFile删除Excel文件解析写入数据库

    Java POI库是用于处理Microsoft Office格式文件的强大工具,尤其...通过解析Excel数据并将其写入数据库,我们可以实现数据的高效迁移或自动化处理,大大提升了工作效率。在实现过程中,务必注意代码的健壮性和安全性。

    POI读取Excel带格式数据

    标题 "POI读取Excel带格式数据" 涉及到的是Apache POI库在Java中的使用,这个库允许开发者处理Microsoft Office格式的文件,包括Excel。Apache POI是一个开源项目,提供了API来读取、写入和修改Excel文档。在本场景...

Global site tag (gtag.js) - Google Analytics