java实现导出excel表到磁盘上(二)---封装

2024-05-31 16:08

本文主要是介绍java实现导出excel表到磁盘上(二)---封装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


关于使用java语言,实现导出数据到excel表的功能,上一篇(  java实现导出excel表到磁盘上---使用poi.jar包) 简单的写了一下,这一篇做了一些封装优化,具体如下:


一、一共分成五个步骤,如下:

// 第一步、创建一个workbook对象,对应一个Excel文件,如xxx.xlsHSSFWorkbook wb = new HSSFWorkbook();// 第二步、在workbook中添加一个sheet,对应Excel文件中的数据格,这个sheetname随便起HSSFSheet sheet = wb.createSheet("sheet_test");// 第三步,在sheet中添加表头第0行setSheetHeader(wb, sheet);// 第四步、将数据添加到excel表insertDatasToSheet(sheet);// 第五步,将excel文件存到指定位置writeExcelToDisk(filePath, wb);


二、已经很详细了,直接看下面的代码就能看懂,不细讲了,代码如下:


package com._test.excel;import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;/*** 实现导出数据到excel表的功能类*/
public class CreateExcelToDisk {/*** 获得Person类数据集合* * @return*/private static List<Person> getPersonDatas() {List<Person> list = new ArrayList<Person>();for (int i = 0; i < 5; i++) {Person p = new Person(i, "person_" + i, 10 + i);list.add(p);}return list;}/*** 导出excel文件*/public void exprotExcel(String filePath) {// 第一步、创建一个workbook对象,对应一个Excel文件,如xxx.xlsHSSFWorkbook wb = new HSSFWorkbook();// 第二步、在workbook中添加一个sheet,对应Excel文件中的数据格,这个sheetname随便起HSSFSheet sheet = wb.createSheet("sheet_test");// 第三步,在sheet中添加表头第0行setSheetHeader(wb, sheet);// 第四步、将数据添加到excel表insertDatasToSheet(sheet);// 第五步,将excel文件存到指定位置writeExcelToDisk(filePath, wb);}/*** 获得excel表头数据* * @return*/private String[] getHearData() {String[] array = new String[] { "编号", "姓名", "年龄" };return array;}/*** 设置字体,可不设* * @param wb*/private HSSFFont setFont(HSSFWorkbook wb) {HSSFFont fontBold = wb.createFont();// 设置字体fontBold.setFontHeightInPoints((short) 10);// 设置字体高fontBold.setFontName("宋体");// 设置字体类型fontBold.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置字体宽return fontBold;}/*** 将excel文件存到指定位置* * @param filePath* @param wb*/private void writeExcelToDisk(String filePath, HSSFWorkbook wb) {try {FileOutputStream fout = new FileOutputStream(filePath);wb.write(fout);fout.close();System.out.println("excel已经导出到:" + filePath);} catch (Exception e) {e.printStackTrace();}}/*** 获得要导出到excel表的数据,并添加导出数据到表中(实际应用中这些数据从数据库得到)* * @param sheet*/private void insertDatasToSheet(HSSFSheet sheet) {List<Person> list = getPersonDatas();for (int i = 0; i < list.size(); i++) {// 创建第i+1行HSSFRow row = sheet.createRow((int) i + 1);Person p = (Person) list.get(i);setCellValue(row, list, sheet, p);}}/*** 创建单元格,并设置各个列中实际数据的值* * @param row* @param list* @param sheet* @param p*/private void setCellValue(HSSFRow row, List<Person> list, HSSFSheet sheet,Person p) {HSSFCell cell = null;String[] array = getHearData();for (int i = 0; i < array.length; i++) {cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell = row.createCell((short) i);if (i == 0) {cell.setCellValue((double) p.getId());} else if (i == 1) {cell.setCellValue(p.getName());} else {cell.setCellValue((double) p.getAge());}}}/*** 在sheet中添加表头第0行,并创建表头行的列单元,设置表头行样式和各个列的名字* * @param wb* @param sheet*/private void setSheetHeader(HSSFWorkbook wb, HSSFSheet sheet) {// 设置表头样式:居中、字体HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式style.setFont(setFont(wb));// 设置字体// 在sheet中添加表头第0行,HSSFRow row = sheet.createRow((int) 0);// 创建表头行的列单元,并添加列头HSSFCell cell = null ;// 获得数据头的列名称数据String[] array = getHearData();for (int i = 0; i < array.length; i++) {// 这个输出编码必须设置,否则汉字会乱码cell = row.createCell(i);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellStyle(style);cell.setCellValue(array[i]);}}public static void main(String[] args) {String filePath = "E:/persons.xls";new CreateExcelToDisk().exprotExcel(filePath);}}


补充说明:


这篇文章,可以实现功能,但是在通用性方面不好,因此又写了一篇作为补充,解决通用性问题:


java实现导出excel表到磁盘上(三)---完整封装,可直接使用






这篇关于java实现导出excel表到磁盘上(二)---封装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018400

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu