当前位置:

首页 > 编程开发 > Java WorkBook对Excel的基本操作方法有哪些

Java WorkBook对Excel的基本操作方法有哪些

1、异常java.lang.NoClassDefFoundError:org/apache/poi/UnsupportedFileFormatException  解决方法:使用的poi的相关jar包一定版本一定要相同!!!!!2、maven所使用jar包,没有使用maven的话,就用poi-3.9.jar和poi-ooxml-3.9.jar(这个主要是用于Excel2007以后的版本)两个jar包就行()org.apache.poipoi3.9org.apache.poipoi-ooxml3.93、ja

本文目录

    1、异常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException

      解决方法:使用的poi的相关jar包一定版本一定要相同!!!!!

    2、maven所使用jar包,没有使用maven的话,就用poi-3.9.jar和poi-ooxml-3.9.jar(这个主要是用于Excel2007以后的版本)两个jar包就行()

    
         org.apache.poi
         poi
         3.9
    
    
         org.apache.poi
         poi-ooxml
         3.9
    

    3、java导入Excel

       先上传Excel

    //上传Excel
    @RequestMapping("/uploadExcel")
    public boolean uploadExcel(@RequestParam MultipartFile file,HttpServletRequest request) throws IOException {
        if(!file.isEmpty()){
            String filePath = file.getOriginalFilename();
            //windows
            String savePath = request.getSession().getServletContext().getRealPath(filePath);
            //linux
            //String savePath = "/home/odcuser/webapps/file";
            File targetFile = new File(savePath);
            if(!targetFile.exists()){
                targetFile.mkdirs();
            }
     
            file.transferTo(targetFile);
            return true;
        }
        return false;
    }

    在读取Excel里面的内容

    public static void readExcel() throws Exception{
    	InputStream is = new FileInputStream(new File(fileName));
    	Workbook hssfWorkbook = null;
    	if (fileName.endsWith("xlsx")){
    		hssfWorkbook = new XSSFWorkbook(is);//Excel 2007
    	}else if (fileName.endsWith("xls")){
    		hssfWorkbook = new HSSFWorkbook(is);//Excel 2003
    	}
    	// HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
    	// XSSFWorkbook hssfWorkbook = new XSSFWorkbook(is);
    	User student = null;
    	List list = new ArrayList();
    	// 循环工作表Sheet
    	for (int numSheet = 0; numSheet 

    4、导出Excel

    //创建Excel
    @RequestMapping("/createExcel")
    public String createExcel(HttpServletResponse response) throws IOException {
     
    	//创建HSSFWorkbook对象(excel的文档对象)
    	HSSFWorkbook wb = new HSSFWorkbook();
    	//建立新的sheet对象(excel的表单)
    	HSSFSheet sheet=wb.createSheet("成绩表");
    	//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
    	HSSFRow row1=sheet.createRow(0);
    	//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
    	HSSFCell cell=row1.createCell(0);
    	//设置单元格内容
    	cell.setCellValue("学员考试成绩一览表");
    	//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
    	sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
    	//在sheet里创建第二行
    	HSSFRow row2=sheet.createRow(1);
    	//创建单元格并设置单元格内容
    	row2.createCell(0).setCellValue("姓名");
    	row2.createCell(1).setCellValue("班级");
    	row2.createCell(2).setCellValue("笔试成绩");
    	row2.createCell(3).setCellValue("机试成绩");
    	//在sheet里创建第三行
    	HSSFRow row3=sheet.createRow(2);
    	row3.createCell(0).setCellValue("李明");
    	row3.createCell(1).setCellValue("As178");
    	row3.createCell(2).setCellValue(87);
    	row3.createCell(3).setCellValue(78);
    	//.....省略部分代码
    	//输出Excel文件
    	OutputStream output=response.getOutputStream();
    	response.reset();
    	response.setHeader("Content-disposition", "attachment; filename=details.xls");
    	response.setContentType("application/msexcel");
    	wb.write(output);
    	output.close();
    	return null;
    }

    补充说明乱码问题

      1、文件名乱码(我发现只要解决了文件名乱码,其他乱码也会跟着解决)response.setHeader("Content-disposition", "attachment; filename=中文.xls");

      这个方法可以当做一个公用方法来使用,以后有乱码的都可以调用此方法

    public static String toUtf8String(String s){ 
         StringBuffer sb = new StringBuffer(); 
           for (int i=0;i= 0 && c <= 255){sb.append(c);} 
            else{ 
            byte[] b; 
             try { b = Character.toString(c).getBytes("utf-8");} 
             catch (Exception ex) { 
                 System.out.println(ex); 
                      b = new byte[0]; 
             } 
                for (int j = 0; j < b.length; j++) { 
                 int k = b[j]; 
                  if (k < 0) k += 256; 
                  sb.append("%" + Integer.toHexString(k).toUpperCase()); 
                  } 
         } 
      } 
      return sb.toString(); 
    }

    调用的时候,response.setHeader("Content-disposition", "attachment; filename="+toUtf8String("中文.xls"));

     我上网查的时候,网上是说

     今天要说的是在创建工作表时,用中文做文件名和工作表名会出现乱码的问题,先说以中文作为工作表名,大家创建工作表的代码一般如下:

        HSSFWorkbook workbook = new HSSFWorkbook();//创建EXCEL文件

            HSSFSheet  sheet= workbook.createSheet(sheetName);    //创建工作表

        这样在用英文名作为工作表名是没问题的,但如果sheetName是中文字符,就会出现乱码,解决的方法如下代码:

        HSSFSheet  sheet= workbook.createSheet();

        workbook.setSheetName(0, sheetName,(short)1); //这里(short)1是解决中文乱码的关键;而第一个参数是工作表的索引号。       

    但是我发现根本没有这个方法,只需要改了文件名的乱码,其他乱码自然就解决了!!!

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Excel Java
    相关文章 更多
    Java单元测试入门:使用JUnit 5编写第一个测试用例
    Java单元测试入门:使用JUnit 5编写第一个测试用例

    面向初学者的JUnit 5实用入门指南。从测试概念、Maven依赖配置,到手把手编写首个单元测试用例及断言验证,助你掌握Java单元测试的核心流程。

    Java变量未初始化报错解析:局部变量与成员变量默认值差异
    Java变量未初始化报错解析:局部变量与成员变量默认值差异

    深入解析Java中局部变量未初始化编译报错与成员变量自动赋予默认值的机制差异,涵盖JVM内存分配、编译期确定性赋值检查与实际排查修复方案。

    Java获取当前时间并格式化输出:DateTimeFormatter与SimpleDateFormat
    Java获取当前时间并格式化输出:DateTimeFormatter与SimpleDateFormat

    详细讲解在Java中获取当前系统时间并进行格式化输出的两种核心方案:基于Java 8全新日期时间API的DateTimeFormatter与传统遗留的SimpleDateFormat,包含完整代码示例、线程安全机制对比及生产选型建议。

    Java中final与static final常量的定义及初始化规则
    Java中final与static final常量的定义及初始化规则

    深入解析Java中final变量与static final常量的定义、内存语义、初始化时机及合法赋值路径,涵盖编译期常量优化与实战避坑指南。

    Java抽象方法与接口方法的区别及选型建议
    Java抽象方法与接口方法的区别及选型建议

    深入对比Java中抽象类抽象方法与接口方法的语法演进、设计意图及运行期差异,并提供清晰的架构选型决策流程与实战范例。

    Java实现HTTP请求与JSON解析的完整代码示例
    Java实现HTTP请求与JSON解析的完整代码示例

    本文提供Java标准库HttpClient发起HTTP GET/POST请求并结合Jackson进行JSON数据反序列化与序列化的完整代码示例与工程实践指南。

    Java递归出现StackOverflowError的原因分析及栈空间优化方案
    Java递归出现StackOverflowError的原因分析及栈空间优化方案

    详细分析Java递归调用出现StackOverflowError的原因,结合代码说明线程栈、栈帧和递归深度之间的关系,并介绍终止条件排查、迭代改写、减少栈帧开销以及通过-Xss调整JVM栈空间的方法。

    Java空指针异常(NPE)的代码排查与修复实例
    Java空指针异常(NPE)的代码排查与修复实例

    针对Java中常见的NullPointerException(NPE),本文从堆栈日志定位、典型代码触发场景、具体修复代码对比到防御体系进行系统讲解,提供实用且易上手的排查与修复方案。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    PDF表格怎么转换成Excel?如何免费将PDF表格转成Excel?
    PDF表格怎么转换成Excel?如何免费将PDF表格转成Excel?

    大家有没有遇到过PDF里的表格无法直接编辑的情况?这时候,将其转换为Excel再进行数据整理就会方便很多。下面,我给大家详细介绍3种完整的操作方法,每一步都配有对应的操作截图,同时还会说明普通PDF和扫描版表格在处理上的区别。 方法一:用极轻PDF转换Excel极轻PDF(pdf.cn)的PDF转E

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。