以前项目中用过Excel导入导出过2003版本的,最近研究了一下能够兼容07+ 版本的操作方法。
首先下载POI的jar包,官方网站: http://jakarta.apache.org/poi/,在项目中导入jar包,如下:
下面直接上代码
1.创建Workbook工厂类
package com.songhn.poi.util; import java.io.File; import java.io.FileInputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * @author songhn * * 创建文档 * */ public class WorkbookFactory { private Workbook workBook = null; private String excelFilePath = null; /** * 创建文档WorkBook(读文档) * @param excelFilePath * @return * @throws Exception */ public Workbook create(String excelFilePath) throws Exception{ this.excelFilePath = excelFilePath; File file = new File(this.excelFilePath); FileInputStream fis = new FileInputStream(file); //2003版的Excel if(excelFilePath.endsWith(".xls")){ workBook = new HSSFWorkbook(fis); //2007版以后的Excel }else if(excelFilePath.endsWith(".xlsx")){ workBook = new XSSFWorkbook(fis); } return workBook; } /** * 创建文档WorkBook(写文档) * @param excelFilePath * @return * @throws Exception */ public Workbook create(String fileName , boolean flag) throws Exception{ this.excelFilePath = fileName; //2003版的Excel if(excelFilePath.endsWith(".xls")){ workBook = new HSSFWorkbook(); //2007版以后的Excel }else if(excelFilePath.endsWith(".xlsx")){ workBook = new XSSFWorkbook(); } return workBook; } }
2.导入Excel文档
/** * */ package com.songhn.poi.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; /** * @author songhn * * 读取Excel工具类(兼容2003以及以后的版本Excel) * */ public class ExcelReadUtil { /** * 读取每一个Sheet的数据 * * @param workBook * @return */ public Map<String, Object> readSheet(Workbook workBook) { Map<String, Object> sheetMap = new HashMap<>(); int _sheetNUM = workBook.getNumberOfSheets(); for (int i = 0; i < _sheetNUM; i++) { Sheet sheet = workBook.getSheetAt(i); String sheetName = sheet.getSheetName(); List<String[]> list = null; if (null != sheet) { list = readRow(sheet); } sheetMap.put(sheetName, list); } return sheetMap; } /** * 读取每一行数据 * * @param workBook * @return */ public List<String[]> readRow(Sheet sheet) { // 获取到最后一行的的行号, 行号是从0开始的 int _rowNum = sheet.getLastRowNum(); List<String[]> list = new ArrayList<String[]>(); for (int i = 0; i <= _rowNum; i++) { Row row = sheet.getRow(i); String[] obj = null; if (null != row) { obj = readCells(row); } list.add(obj); } return list; } /** * 读取每一行的单元格数据 * * @param row * @return */ private String[] readCells(Row row) { int _cellCount = row.getPhysicalNumberOfCells(); String[] values = new String[_cellCount]; for (int i = 0; i < _cellCount; i++) { Cell cell = row.getCell(i); if (null != cell) { String value = null; switch (cell.getCellType()) { case Cell.CELL_TYPE_FORMULA: value = "" + cell.getCellFormula(); break; case Cell.CELL_TYPE_NUMERIC: // 判断是否是日期格式数据 if (DateUtil.isCellDateFormatted(cell)) { value = DateUtil.formatDate(cell.getDateCellValue(),"yyyy-MM-dd"); } else { value = "" + cell.getNumericCellValue(); } break; case Cell.CELL_TYPE_STRING: value = "" + cell.getStringCellValue(); break; case Cell.CELL_TYPE_BOOLEAN: value = "" + cell.getBooleanCellValue(); break; case Cell.CELL_TYPE_BLANK: value = ""; default: } values[i] = value; } } return values; } }
3.导出Excel文档
接口:
package com.songhn.poi.inter; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; /** * 写Excel文档 * @author songhn * */ public interface ExceWriteInter { /** * 创建Excel文档 * @param excelFilePath */ public void createExcel(Workbook workBook,List<String[]> list)throws Exception; }
2003实现:
/** * */ package com.songhn.poi.util; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Workbook; import com.songhn.poi.inter.ExceWriteInter; /** * @author songhn * */ public class ExcelWriteUtil2003 implements ExceWriteInter { @Override public void createExcel(Workbook workBook,List<String[]> list)throws Exception { HSSFSheet sheet = (HSSFSheet) workBook.createSheet(); RichTextString richString = null; Font font = null; CellStyle style = null; for (int i = 0; i < list.size(); i++) { if(i == 0){ font = workBook.createFont(); font.setFontHeightInPoints((short)24); //字体大小 font.setFontName("楷体"); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //粗体 font.setColor(HSSFColor.GREEN.index); //绿字 style = workBook.createCellStyle(); style.setFont(font); String[] values = (String[])list.get(i); HSSFRow row = (HSSFRow) sheet.createRow(i); for (int j = 0; j < values.length; j++) { String string = values[j]; HSSFCell cell = row.createCell(j); richString = new HSSFRichTextString(string); cell.setCellValue(richString); cell.setCellStyle(style); } }else{ String[] values = (String[])list.get(i); HSSFRow row = (HSSFRow) sheet.createRow(i); for (int j = 0; j < values.length; j++) { String string = values[j]; HSSFCell cell = row.createCell(j); richString = new HSSFRichTextString(string); cell.setCellValue(richString); } } } } }
2007+实现:
/** * */ package com.songhn.poi.util; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRichTextString; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import com.songhn.poi.inter.ExceWriteInter; /** * @author songhn * */ public class ExcelWriteUtil2007 implements ExceWriteInter { @Override public void createExcel(Workbook workBook,List<String[]> list)throws Exception { XSSFSheet sheet = (XSSFSheet) workBook.createSheet(); RichTextString richString = null; Font font = null; CellStyle style = null; for (int i = 0; i < list.size(); i++) { //设置表头 if(i == 0){ font = workBook.createFont(); font.setFontHeightInPoints((short)12); //字体大小 font.setFontName("微软雅黑"); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //粗体 font.setColor(HSSFColor.GREEN.index); //绿字 String[] values = (String[])list.get(i); XSSFRow row = (XSSFRow) sheet.createRow(i+1); style = workBook.createCellStyle(); style.setFont(font); style.setBorderBottom(CellStyle.BORDER_DOUBLE); for (int j = 0; j < values.length; j++) { String string = values[j]; XSSFCell cell = row.createCell(j+1); richString = new XSSFRichTextString(string); cell.setCellValue(richString); cell.setCellStyle(style); } }else{ font = workBook.createFont(); font.setFontHeightInPoints((short)12); //字体大小 font.setFontName("微软雅黑"); style = workBook.createCellStyle(); style.setFont(font); style.setBorderBottom(CellStyle.BORDER_THIN); String[] values = (String[])list.get(i); XSSFRow row = (XSSFRow) sheet.createRow(i+1); for (int j = 0; j < values.length; j++) { String string = values[j]; XSSFCell cell = row.createCell(j+1); richString = new XSSFRichTextString(string); cell.setCellValue(richString); cell.setCellStyle(style); } } } } }
用到的工具类:
package com.songhn.poi.util; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.ss.usermodel.Cell; /** * @author songhn * * 日期工具 */ public class DateUtil { /** * 判断是否是日期格式数据 * @param cell * @return */ public static boolean isCellDateFormatted(Cell cell){ if (HSSFDateUtil.isCellDateFormatted(cell)) { return true; } return false; } /** * 将日期格式的数据按照预定的格式进行转换 * @param date * @param formatGeshi * @return */ public static String formatDate(Date date , String formatGeshi){ SimpleDateFormat format =new SimpleDateFormat(formatGeshi); return format.format(date); } }
测试代码:
/** * */ package com.songhn.poi.test; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.poi.ss.usermodel.Workbook; import com.songhn.poi.util.ExcelReadUtil; import com.songhn.poi.util.WorkbookFactory; /** * @author songhn * */ public class ReadExcelTest { /** * @param args */ public static void main(String[] args) { String excelPath = "E:\\testExcel.xls"; WorkbookFactory factory = new WorkbookFactory(); Map map = null; try { Workbook workBook= factory.create(excelPath); ExcelReadUtil util = new ExcelReadUtil(); map = util.readSheet(workBook); } catch (Exception e) { e.printStackTrace(); } Set set = map.keySet(); for(Iterator it=set.iterator();it.hasNext();){ String key = (String)it.next(); System.out.println("Sheet名称:" + key); List<String[]> list = (List<String[]>)map.get(key); for (int i = 0; i < list.size(); i++) { String[] str = list.get(i); String obj = ""; for (int j = 0; j < str.length; j++) { obj = obj + str[j] + ","; } System.out.println("第"+(i+1)+"行:"+obj); } } } }
package com.songhn.poi.test; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.ss.usermodel.Workbook; import com.songhn.poi.inter.ExceWriteInter; import com.songhn.poi.util.ExcelWriteUtil2003; import com.songhn.poi.util.ExcelWriteUtil2007; import com.songhn.poi.util.WorkbookFactory; public class WriteExcelTest { /** * @param args */ public static void main(String[] args) { List<String[]> list = new ArrayList<String[]>(); String[] title = new String[5]; title[0] = "标题1"; title[1] = "标题2"; title[2] = "标题3"; title[3] = "标题4"; title[4] = "标题5"; list.add(title); for (int i = 1; i < 10; i++) { String[] str = new String[5]; str[0] = "张三"+i; str[1] = "李四"+i; str[2] = "王五"+i; str[3] = "赵六"+i; str[4] = "冯七"+i; list.add(str); } ExceWriteInter write = new ExcelWriteUtil2007(); String excelFilePath = "E:\\"; String excelFileName = "test.xlsx"; try { WorkbookFactory workBookFactory =new WorkbookFactory(); Workbook workbook = workBookFactory.create(excelFileName,false); write.createExcel(workbook, list); workbook.write(new FileOutputStream(new File(excelFilePath+excelFileName))); System.out.println("创建成功!!!"); } catch (Exception e) { System.out.println("创建失败!!!"); e.printStackTrace(); } } }
相关推荐
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
基于Simulink的语音信号降噪与增强.docx
java资源Java条形码生成库 Barcode4J提取方式是百度网盘分享地址
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
com.bishua666.luxxx1.apk
Nginx配置文件中FastCGI相关参数理解
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
内容概要:本文介绍了由 Google 开发的编程语言 Golang (Go)。Golang 是一种静态类型、编译型且具有垃圾回收功能的并发编程语言,旨在提供简单、可靠和高效的开发体验。它的语法类似于 C 语言,去除了复杂的语法结构,提高了代码可读性和效率。同时,Golang 还提供了卓越的性能、内存管理和跨平台支持,适用于网络应用、分布式系统、云计算等领域。此外,文中提到多个知名公司在其业务中广泛采用了 Go 语言,并定期更新版本以适应不断变化的技术需求。 适合人群:对于对编程感兴趣的技术人员,尤其是希望深入了解并发编程以及寻求高性能后端语言的研发人员。 使用场景及目标:①理解和掌握 Golang 的基本概念及其与其他传统编程语言的区别;②探索 Golang 如何利用 goroutines 和 channels 提供强大的并发编程能力;③了解 Golang 在构建高可用性分布式系统方面的优势。 其他说明:随着 Go 社区的发展壮大和技术的不断创新,学习 Golang 不仅为开发者打开了新的视野,也为未来的项目选型提供了有力支持。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
功能说明: 系统主要包括主页、个人中心、用户管理、就诊人建档管理、医院介绍管理、科室管理、医生管理、预约挂号管理、用户退号管理、异常提醒管理、留言板、系统管理等功能模块。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
汉语言文学 4.pdf
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
中国城镇住户微观数据(1986-2015)-最新全集.zip
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
中国数字经济发展与基础设施指标(2011-2020)-最新数据.zip
中国数字经济数据(全国-省-市-县-乡)-最新.zip