Java操作Excel文件

2023-11-18

创建一个Excel文件

public static void creatExcelFile(String filepath){
        Workbook wb = new XSSFWorkbook();
        try {
            FileOutputStream fileOut = new FileOutputStream(filepath);
            wb.write(fileOut);
            fileOut.close();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("文件创建成功!");
        }
    }

判断Excel文件后缀名

因为老版本的excel文件后缀名是.xls,新版本的是.xlsx,获取WorkBook对象的调用的类就不同,所以在获取对象的时候要进行判断
Java代码:

 	/**
     * 判断Excel的版本,获取Workbook
     * @return
     * @throws IOException
     */
    public static Workbook getWorkbook(String filepath) throws IOException{
        File file = new File(filepath);
        FileInputStream in = new FileInputStream(file);
        System.out.println(file.getName());
        if(file.getName().endsWith(".xls")){     
            HSSFWorkbook workBook =new HSSFWorkbook(in);
            return workBook;

        }else if(file.getName().endsWith(".xlsx")){    
            XSSFWorkbook workbook = new XSSFWorkbook(in);
            return workbook;
        }else {
            System.out.println("文件格式错误!");
        }
        return null;
    }

数据写入

    public static void writeExcel(){
        //数据准备
        Map<String,String> map = new HashMap<>();
        map.put("Name","ycy");
        map.put("Addr","xiaojie");
        map.put("Phone","123456");

        Map<String,String> map1 = new HashMap<>();
        map1.put("Name","ljx");
        map1.put("Addr","guangdong");
        map1.put("Phone","654321");

        List<Map> dataList = new ArrayList<>();
        dataList.add(map);
        dataList.add(map1);

        String finalXlsxPath = "D:\\Test\\demo.xlsx";
        OutputStream out = null;
        
        try {
            // 读取Excel文档
            Workbook workBook = getWorkbook(finalXlsxPath);
            // sheet 对应一个工作页
            Sheet sheet = workBook.getSheetAt(0);
            
            /**
             * 往Excel中写新数据
             */
            for (int j = 0; j < dataList.size(); j++) {
                // 创建一行:从第二行开始,跳过属性列
                Row row = sheet.createRow(j + 1);
                // 得到要插入的每一条记录
                Map dataMap = dataList.get(j);
                String name = dataMap.get("BankName").toString();
                String address = dataMap.get("Addr").toString();
                String phone = dataMap.get("Phone").toString();

                    //获取单元格
                    Cell first = row.createCell(0);
                    first.setCellValue(name);

                    Cell second = row.createCell(1);
                    second.setCellValue(address);

                    Cell third = row.createCell(2);
                    third.setCellValue(phone);

            }
            
            // 创建文件输出流,准备输出电子表格
            out =  new FileOutputStream("D:\\Test\\2.xlsx");
            workBook.write(out);
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            try {
                if(out != null){
                    out.flush();
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println("数据导出成功");

根据模板文件写入数据

	public void  excelFileAnalysis1(){
        String   excelPath="C:\\Users\\41089\\Desktop\\新建文件夹\\北配电器.xlsx";
        FileInputStream c= null;
        try {
            c = new FileInputStream(excelPath);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        ExcelHeaderTableEntity excelHeaderTable=new ExcelHeaderTableEntity();//所有解析数据存入该对象
        try {
            File excel = new File(excelPath);
            if (excel.isFile() && excel.exists()) {   //判断文件是否存在
                Workbook wb = getWorkbook(excelPath);
                //开始解析
                Sheet sheet = wb.getSheetAt(0);     //读取sheet 0
                int firstRowIndex = sheet.getFirstRowNum();   //第一行是列名
                int lastRowIndex = sheet.getLastRowNum();
                for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) {   //遍历行
                    ExcelGeneralTableEntity  excelGeneralTable= new ExcelGeneralTableEntity();
                    Row row = sheet.getRow(rIndex);
                    if (row != null) {
                        int firstCellIndex = row.getFirstCellNum();
                        int lastCellIndex = row.getLastCellNum();
                        for (int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++) {   //遍历列
                            Cell cell = row.getCell(cIndex);
                            if (cell != null) {
                            	//判断每个单元格,这里只列出了两个条件,
                            	//可以根据实际情况更改判断条件
                                if(cell.toString().equals("ycy"))
                                    cell.setCellValue("123");
                                if(cell.toString().equals("ljx"))
                                    cell.setCellValue("456");
                            }
                        }
                    }
                }
               FileOutputStream b=new FileOutputStream("D:\\Test\\d.xlsx");
                wb.write(b);
                b.close();
            } else {
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java操作Excel文件 的相关文章

  • MySQL——无法打开MySQL8.0软件安装包或者安装过程中失败,如何解决?

    在运行MySQL8 0软件安装包之前 用户需要确保系统中已经安装了 Net Framework相关软件 如果缺少此软件 将不能正常地安装MySQL8 0软件 解决方案 到这个地址 https www microsoft com en us
  • 51 单片机占用 RAM 分析

    51 单片机占用 RAM 分析 简介 很久不用 51 单片机了 再拿起 51 的东西 发现之前学的时候遗漏很多细节 比如 RAM 的占用情况 都哪些会占用 RAM 空间 当时学习的时候从来没有注意过 包括用上 32 位的 MCU 之后也不怎

随机推荐

  • 学习SVG(八)文本

    简介 在SVG中除了绘图外 还可以添加文本 需要使用
  • 直播预告

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 6月9日晚7 30 9 00 AI TIME特别邀请了三位优秀的讲者跟大家共同开启ICLR专场六 哔哩哔哩直播通道 扫码关注AITIME哔哩哔哩官方账号 观看直播 链接 http
  • 前沿探索|关于 AIGC 的「幻觉/梦游」问题

    AI语言模型的梦游是指模型产生内容与真实世界不符或者是毫无意义的情况 这种情况主要是由于语言模型缺乏真实世界的知识和语言的含义 导致模型难以理解和表达现实世界的概念和信息 这种情况在现代自然语言处理中普遍存在 尤其是在开放式生成领域的问题中
  • 分享一个可以下载全球geojson经纬度信息的网址

    https gadm org download country html
  • MySQL数据库语言一、DDL

    作者简介 正在努力的99年打工人 宣言 人生就是B birth 和D death 之间的C choise 做好每一个选择 创作不易 动动小手给个点赞加关注吧 有什么意见评论区告诉我 一起学习 目录 前言 什么是数据库 DDL语句 创建库 创
  • Python获取微信好友地址以及性别并生成可视化图表

    简介 使用python批量获取微信好友地址 需要使用itchat库 这个库是用的网页版微信的接口进行数据获取的 所以你想测试这个功能必须要你的微信能够登录网页版微信 之前的itchat uos模块使用了统信版的接口绕过了腾讯的检测 所有的微
  • Python opencv学习-8寻找轮廓、绘制轮廓

    import numpy as np import cv2 im cv2 imread image canny png 寻找轮廓前要对其进行灰度化 二值化处理 也可使用canny进行边缘检测 imgray cv2 cvtColor im c
  • 大厂真实Java面试题合集附答案(腾讯、阿里、字节跳动、百度、美团)

    这些面试题都是互联网大厂真实流出的面试内容 每个问题都附带完整详细的答案 不像网上的那些资料三教九流有的甚至还没答案 这些面试题我也是经过日积月累才整理出来的精品资料 这些面试题主要是针对1 5年左右的Java开发程序员提升的 不管是传统行
  • 实时音频编解码之五 噪声整形

    本文谢绝任何形式转载 谢谢 1 4 5 噪声整形 因压缩比特率而带来的量化误差会导致规律的噪声产生 即使量化带来的噪声能量上远小于语音信号 但是由于人的听觉系统对规律性的噪声非常敏感 因而非常影响听觉体验 噪声整形的目的是增加量化后解码信号
  • Python报错 AttributeError: ‘NoneType‘ object has no attribute ‘split

    Python报错 AttributeError NoneType object has no attribute split 源程序 raw line None dstID if line n pid ls append ID title
  • typora的images怎么设置相对路径

    我的软件安装在D Typora 分别有D Typora FilesSave和D Typora images 分别用来保存 md文件和用到的图片 首先preferences image启用copy image to custom folder
  • C++设计模式之抽象工厂模式

    之前讲到了C 设计模式 工厂方法模式 我们可能会想到 后期产品会越来越多了 建立的工厂也会越来越多 工厂进行了增长 工厂变的凌乱而难于管理 而且由于工厂方法模式创建的对象都是继承于Product的 所以工厂方法模式中 每个工厂只能创建同一产
  • 太好用了!Linux 服务器上必备的 4 个开源工具

    关注后回复 进群 拉你进程序员交流群 来自 开源最前线 今天和大家分享 4 个可以在 Linux 上运行的开源服务器 1 Samba Samba 是种自由软件 用来让 UNIX 系列的操作系统与微软 Windows 操作系统的 SMB CI
  • 响应式布局之REM

    REM是实现响应式布局的方案之一 除了REM之外 还有VM REM VM 今天主要来记录一下REM的实操 一 安装插件 npm install lib flexible npm install postcss plugin px2rem D
  • 第36章_瑞萨MCU零基础入门系列教程之步进电机控制实验

    本教程基于韦东山百问网出的 DShanMCU RA6M5开发板 进行编写 需要的同学可以在这里获取 https item taobao com item htm id 728461040949 配套资料获取 https renesas do
  • 史上最详细的快速排序算法

    史上最详细的快速排序算法 最近学了快速排序算法 在csdn上找了很多篇博客 虽然代码可以执行正确 但是解释却有点 官方 有很多细节 很多需要注意的地方并没有写到 故此 我写了这篇博客 看了我这篇博客 你绝对会恍然大悟 先给大家看看清楚明了的
  • 谁说不同品牌内存无法兼容-关键调整频率和内存时序

    高手绕道 菜鸟文 当时2018年买了两根光威DDR4 8G 3000的灯条 2019年手欠又买了两根威刚DDR4 8G 3000的黄金马甲条 两组内存条都是京东上买的 当时买完两组之后插上就看看电影 跑跑虚拟机看看网页没发现啥问题 结果过了
  • 力扣题---二叉树前、中、后序遍历

    二叉树前序遍历 我们先来了解题目 输入 root 1 null 2 3 输出 1 2 3 示例 2 输入 root 输出 示例 3 输入 root 1 输出 1 从示例不难看出 题目给定树的根结点 用前序遍历的方式 把二叉树的值放入数组中
  • 言情小说通用情节[转]

    第一部分 典型开篇 一 好美好神秘的人哦 一件惊艳加钟情 眼珠掉地上滚三圈 于是非君莫娶 嫁 死缠烂打 看欧的牛皮糖超级粘人功 二 你由于某些原因 比如漂亮可爱的外表 突如其来的爆炸 或者地上一块可怜的香蕉皮 而陷入危机的时候 那勇敢的 阿
  • Java操作Excel文件

    创建一个Excel文件 public static void creatExcelFile String filepath Workbook wb new XSSFWorkbook try FileOutputStream fileOut