poi 设置word表格颜色_POI工具练习

53c3644028802d983300e1ec00309c21.png

POI是一个可以对excel文件进行操作的jar包,使用它可以帮助我们对excel进行操作,也就可以帮助我们实现在jsp页面添加导入数据的功能。只要我们在控制层servlet中加入处理的方法就可以了;首先使用到POI都会与JXL进行对比:查阅之后大致是这样的

一、jxl优点:Jxl对中文支持非常好,操作简单,方法看名知意。

Jxl是纯javaAPI,在跨平台上表现的非常完美。 支持字体、数字、日期操作,能够修饰单元格属性, 支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。缺点:效率低,图片支持不完善,对格式的支持不如POI强大

二、POI优点:效率高。支持公式,宏,一些企业应用上会非常实用 ,能够修饰单元格属性。 支持字体、数字、日期操作。缺点:不成熟,代码不能跨平台。

是具体使用那个包,看你使用的具体情况来定。下面是POI工具类的使用

POI工具类为:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
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;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;
/*OutputStream out = response.getOutputStream();//response.reset();response.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition", "attachment; fileName=" + new String(("duty.xls").getBytes(), "iso8859-1"));// OutputStream outputStream = new FileOutputStream("D:/students.xls");workbook.write(out);out.close();*/
public class ExcelOperate {public static void main(String[] args) {// 创建Excel表格createExcel(getStudent());// 读取Excel表格// List<Student> list = readExcel();// System.out.println(list.toString());}/*** 初始化数据* * @return 数据*/private static List<Student> getStudent() {List<Student> list = new ArrayList<Student>();Student student1 = new Student("小明", 8, "二年级");Student student2 = new Student("小光", 9, "三年级");Student student3 = new Student("小花", 10, "四年级");list.add(student1);list.add(student2);list.add(student3);return list;}/*** 创建Excel* * @param list*            数据*/private static void createExcel(List<Student> list) {// 创建一个Excel文件HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个工作表HSSFSheet sheet = workbook.createSheet("学生表一");CellRangeAddress region = new CellRangeAddress(0, // first row0, // last row0, // first column2 // last column);sheet.addMergedRegion(region);HSSFRow hssfRow = sheet.createRow(0);HSSFCell headCell = hssfRow.createCell(0);headCell.setCellValue("学生列表");// 设置单元格格式居中HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);/*cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// cellStyle.setFillBackgroundColor(HSSFColor.GREEN.index);cellStyle.setFillForegroundColor(HSSFColor.GREEN.index);HSSFFont font = workbook.createFont();font.setFontName("楷体"); //字体font.setFontHeightInPoints((short)30); //字体大小font.setColor(HSSFColor.RED.index);//颜色font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗font.setItalic(true); //倾斜cellStyle.setFont(font);*/headCell.setCellStyle(cellStyle);// 添加表头行hssfRow = sheet.createRow(1);// 添加表头内容headCell = hssfRow.createCell(0);headCell.setCellValue("姓名");headCell.setCellStyle(cellStyle);headCell = hssfRow.createCell(1);headCell.setCellValue("年龄");headCell.setCellStyle(cellStyle);headCell = hssfRow.createCell(2);headCell.setCellValue("年级");headCell.setCellStyle(cellStyle);// 添加数据内容for (int i = 0; i < list.size(); i++) {hssfRow = sheet.createRow((int) i + 2);Student student = list.get(i);// 创建单元格,并设置值HSSFCell cell = hssfRow.createCell(0);cell.setCellValue(student.getName());cell.setCellStyle(cellStyle);cell = hssfRow.createCell(1);cell.setCellValue(student.getAge());cell.setCellStyle(cellStyle);cell = hssfRow.createCell(2);cell.setCellValue(student.getGrade());cell.setCellStyle(cellStyle);}// 保存Excel文件try {OutputStream outputStream = new FileOutputStream("D:/students.xls");workbook.write(outputStream);outputStream.close();} catch (Exception e) {e.printStackTrace();}}/*** 读取Excel* * @return 数据集合*/private static List<Student> readExcel() {List<Student> list = new ArrayList<Student>();HSSFWorkbook workbook = null;try {// 读取Excel文件InputStream inputStream = new FileInputStream("D:/students.xls");workbook = new HSSFWorkbook(inputStream);inputStream.close();} catch (Exception e) {e.printStackTrace();}// 循环工作表for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {HSSFSheet hssfSheet = workbook.getSheetAt(numSheet);if (hssfSheet == null) {continue;}// 循环行for (int rowNum = 2; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {HSSFRow hssfRow = hssfSheet.getRow(rowNum);if (hssfRow == null) {continue;}// 将单元格中的内容存入集合Student student = new Student();HSSFCell cell = hssfRow.getCell(0);if (cell == null) {continue;}student.setName(cell.getStringCellValue());cell = hssfRow.getCell(1);if (cell == null) {continue;}student.setAge((int) cell.getNumericCellValue());cell = hssfRow.getCell(2);if (cell == null) {continue;}student.setGrade(cell.getStringCellValue());list.add(student);}}return list;}
}class Student {private String name;private int age;private String grade;public Student() {}public Student(String name, int age, String grade) {super();this.name = name;this.age = age;this.grade = grade;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", grade=" + grade+ "]";}
}

这个里面是具体的用法,与对一个学生列表实现的案例;使用该工具我们只要在servelt中调用工具类的创建excel与实现excel的方法即可;就像:

				DutyService ds=new DutyServiceImpl();List<Duty> dutyList=ds.findBy(empId,deptno,dtDate);//返回输出流createExcel(dutyList,resp);

我将查询返回到的列表传输到创建excel的方法,并且对excel的方法进行了重写,在与前台页面进行交互的时候,因为要对客户端进行写入操作,而不是对服务器端进行操作,所以我将response也传入进去,因为我们不能简单对返回的数据进行重定向或者请求转发操作,而是以流的方式写回去

  try {resp.setContentType("application/vnd.ms-excel");//声明导出excelresp.setHeader("Content-disposition", "attachment;filename=duty.xls");//附件形式下载包括名字//OutputStream outputStream = new FileOutputStream("D:/kaoqin.xls");ServletOutputStream outputStream = resp.getOutputStream();workbook.write(outputStream);outputStream.close();} catch (Exception e) {e.printStackTrace();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java类的定义

类是 Java 中的一种重要的引用数据类型&#xff0c;也是组成 Java 程序的基本要素&#xff0c;因为所有的 Java 程序都是基于类的。 在 Java 中定义一个类&#xff0c;需要使用 class 关键字、一个自定义的类名和一对表示程序体的大括号。完整语法如下&#xff1a; [public][…

excel文件存入mysql_解析excel文件并将数据导入到数据库中

今天领导给安排了一个临时工作&#xff0c;让我将一个excel里面的数据解析后放入数据库中&#xff0c;经过一个下午的努力成功完成&#xff0c;现在将代码献上&#xff0c;希望对大家有所帮助一、需要导入的jar1.commons-collections4-4.1.jar2.poi-3.17-beta1.jar3.poi-ooxml-…

android app性能优化_Android性能优化之Apk 瘦身优化

瘦身主要是下载转换率提高头部App都有Lite版本渠道合作产商要求APK 分析工具ApkTool 反编译工具官网&#xff1a;https://ibotpeaches.github.io/ApkTool apktool d students.apkAnalyze apkAndroid studio 2.2之后使用 - 查看apk组成大小&#xff0c;各资源占比 - 查看dex文件…

Java类的属性

在 Java 中类的成员变量定义了类的属性。例如&#xff0c;一个学生类中一般需要有姓名、性别和年龄等属性&#xff0c;这时就需要定义姓名、性别和年龄 3 个属性。声明成员变量的语法如下&#xff1a; [public|protected|private][static][final]<type><variable_nam…

vue 拖动 datatransfer 问题_electron-vue跨平台桌面应用开发实战教程(四)——窗口样式amp;打开新窗口...

&#xfeff;> 本文我们讲解下怎么修改窗口样式&#xff0c;系统默认的窗口非常普通&#xff0c;通常与设计不符&#xff0c;所以我们要自定义&#xff0c;接下来我们讲解下怎么去掉原有样式&#xff0c;怎么实现实现窗口的最小化&#xff0c;最大化和关闭按钮。还有怎么打开…

string 包含_一文搞懂String常见面试题,从基础到实战,到原理分析和源码解析...

01 string基础1.1 Java String 类字符串广泛应用 在 Java 编程中&#xff0c;在 Java 中字符串属于对象&#xff0c;Java 提供了 String 类来创建和操作字符串。1.2 创建字符串创建字符串最简单的方式如下:String greeting "菜鸟教程";在代码中遇到字符串常量时&…

RPN网络在图像处理中的应用

RPN&#xff08;Region Proposal Network&#xff0c;区域建议网络&#xff09;是深度学习中用于目标检测的关键组件之一&#xff0c;它通常与后续的目标检测网络&#xff08;如Fast R-CNN、Faster R-CNN等&#xff09;结合使用。RPN的主要作用是生成候选目标区域&#xff0c;从…

Java创建一个学生类

创建一个表示学生的实体类 Student&#xff0c;其中有学生姓名、性别和年龄信息。要求使用属性来表示学生信息&#xff0c;最终编写测试代码。 首先定义一个名为 Student 的类&#xff0c;代码如下&#xff1a; public class Student {// 学生类 }在类中通过属性定义学生、性…

pythonwhile爬虫教程_Python 爬虫从入门到进阶之路(十一)

之前的文章我们介绍了一下 Xpath 模块&#xff0c;接下来我们就利用 Xpath 模块爬取《糗事百科》的糗事。之前我们已经利用 re 模块爬取过一次糗百&#xff0c;我们只需要在其基础上做一些修改就可以了&#xff0c;为了保证项目的完整性&#xff0c;我们重新再来一遍。我们通过…

python中fd是什么意思_python里fd是什么意思

文件描述字(file descriptor&#xff0c;fd)是系统中用来唯一记录当前已经打开的文件的标识号&#xff0c;fd是一个整数。除了file对象外&#xff0c;Python还提供对fd的操作&#xff0c;对fd的操作更加底层&#xff0c;fd和Python中的file对象是不同的概念。在介绍file对象时已…

show index mysql_MySQL SHOW INDEX语法的实际应用

以下的文章主要描述的是MySQL SHOW INDEX语法的实际操作用法以及其实际查看索引状态(语法)的具体内容的描述&#xff0c;如果你对这一技术&#xff0c;心存好奇的话&#xff0c;以下的文章将会揭开它的神秘面纱。SHOW INDEX FROM tbl_name [FROM db_name]MySQL SHOW INDEX会返回…

阿联酋esma认证怎么做_百度爱采购企业认证是怎么做的?这些你要知道!

入驻百度爱采购的企业可以获得认证标识&#xff0c;这个标识是企业品牌树立的重要表现&#xff0c;在产品展示页面和百度首页搜索企业名称都有企业信息的醒目展示&#xff0c;并且可以直接跳转到企业店铺&#xff0c;为企业带来流量的同时&#xff0c;还能进行品牌的宣传。百度…

Java this关键字详解

this 关键字是 Java 常用的关键字&#xff0c;可用于任何实例方法内指向当前对象&#xff0c;也可指向对其调用当前方法的对象&#xff0c;或者在需要当前类型对象引用时使用。 this.属性名 大部分时候&#xff0c;普通方法访问其他方法、成员变量时无须使用 this 前缀&#…

zabbixdocker里的mysql_基于Docker安装与部署Zabbix

今天测试了一天的Zabbix-Docker&#xff0c;部署起来确实方便&#xff0c;就需要在安装了Docker的linux系统中输入以下命令就可以了。1.安装MysqL数据库,启动一个空的MysqL服务器实例docker run Cname zabbix-DB -t \-e MysqL_DATABASE”zabbix” \-e MysqL_USER”zabbix” \-e…

Java创建对象详解

对象是对类的实例化。对象具有状态和行为&#xff0c;变量用来表明对象的状态&#xff0c;方法表明对象所具有的行为。Java 对象的生命周期包括创建、使用和清除, Java 语言中创建对象分显式创建与隐含创建两种情况。 显式创建对象 对象的显式创建方式有 4 种。 1. 使用 new …

python matplotlib模块教程_Python中的Matplotlib模块入门教程

1 关于 Matplotlib 模块Matplotlib 是一个由 John Hunter 等开发的&#xff0c;用以绘制二维图形的 Python 模块。它利用了 Python 下的数值计算模块 Numeric 及 Numarray&#xff0c;克隆了许多 Matlab 中的函数&#xff0c; 用以帮助用户轻松地获得高质量的二维图形。Matplot…

人脸离线识别模块_人脸消费机离线刷脸如何实现?

随着越来越多刷卡刷脸一卡通的设备出现。大家在享受一卡通的便利的同时。也在考虑人脸消费机的基本功能和安全属性&#xff0c;人脸消费机&#xff0c;是指人脸在消费访客管理方面的相关。在人脸刷脸进行消费的时候是一下几个阶段1.人脸特征提取首先得先让人脸消费机看到你的脸…

Java匿名对象

创建对象的格式如下&#xff1a; 类名称 对象名 new 类名称();每次 new 都相当于开辟了一个新的对象&#xff0c;并开辟了一个新的物理内存空间。如果一个对象只需要使用唯一的一次&#xff0c;就可以使用匿名对象&#xff0c;匿名对象还可以作为实际参数传递。 匿名对象就是…

mysql中的钱null_MySQL数据库中null的知识点总结

在mysql数据库中&#xff0c;null是一个经常出现的情况&#xff0c;关于mysql中的null&#xff0c;有哪些注意事项呢&#xff1f;下面简单总结归纳下&#xff0c;后续会不断补充。1. is null首先判断数据库中某一列的值是否为null&#xff0c;不能用等于来判断&#xff0c;必须…