Java读写Excel

news/2024/7/21 4:53:13 标签: excel

Java读写Excel

工作中经常需要对Excel进行读写操作,java操作excel文件比较流行的是apache poi包,excel分为xls(2003)和xlsx(2007)两种格式,操作这两种格式的excel需要不同的poi包。

  • xls格式
      <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi</artifactId>
          <version>3.11-beta1</version>
      </dependency>
    
  • xlsx格式
      <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi-ooxml</artifactId>
          <version>3.11-beta1</version>
      </dependency>
    

读xls

    File file = new File("src/test/resources/test.xls");
    POIFSFileSystem poifsFileSystem = new POIFSFileSystem(new       FileInputStream(file));
    HSSFWorkbook hssfWorkbook =  new HSSFWorkbook(poifsFileSystem);
    HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);

    int rowstart = hssfSheet.getFirstRowNum();
    int rowEnd = hssfSheet.getLastRowNum();
    for(int i=rowstart;i<=rowEnd;i++)
    {
        HSSFRow row = hssfSheet.getRow(i);
        if(null == row) continue;
        int cellStart = row.getFirstCellNum();
        int cellEnd = row.getLastCellNum();

        for(int k=cellStart;k<=cellEnd;k++)
        {
            HSSFCell cell = row.getCell(k);
            if(null==cell) continue;
            System.out.print("" + k + "  ");
            //System.out.print("type:"+cell.getCellType());

            switch (cell.getCellType())
            {
                case HSSFCell.CELL_TYPE_NUMERIC: // 数字
                                System.out.print(cell.getNumericCellValue()
                            + "   ");
                    break;
                case HSSFCell.CELL_TYPE_STRING: // 字符串
                    System.out.print(cell.getStringCellValue()
                            + "   ");
                    break;
                case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
                    System.out.println(cell.getBooleanCellValue()
                            + "   ");
                    break;
                case HSSFCell.CELL_TYPE_FORMULA: // 公式
                    System.out.print(cell.getCellFormula() + "   ");
                    break;
                case HSSFCell.CELL_TYPE_BLANK: // 空值
                    System.out.println(" ");
                    break;
                case HSSFCell.CELL_TYPE_ERROR: // 故障
                    System.out.println(" ");
                    break;
                default:
                    System.out.print("未知类型   ");
                    break;
            }

        }
        System.out.print("\n");
    }

读xlsx

    File file = new File("src/test/resources/test.xlsx");

    XSSFWorkbook xssfWorkbook = new XSSFWorkbook(file);
    XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);

    int rowstart = xssfSheet.getFirstRowNum();
    int rowEnd = xssfSheet.getLastRowNum();
    for(int i=rowstart;i<=rowEnd;i++)
    {
        XSSFRow row = xssfSheet.getRow(i);
        if(null == row) continue;
        int cellStart = row.getFirstCellNum();
        int cellEnd = row.getLastCellNum();

        for(int k=cellStart;k<=cellEnd;k++)
        {
            XSSFCell cell = row.getCell(k);
            if(null==cell) continue;

            switch (cell.getCellType())
            {
                case HSSFCell.CELL_TYPE_NUMERIC: // 数字
                    System.out.print(cell.getNumericCellValue()
                            + "   ");
                    break;
                case HSSFCell.CELL_TYPE_STRING: // 字符串
                    System.out.print(cell.getStringCellValue()
                            + "   ");
                    break;
                case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
                    System.out.println(cell.getBooleanCellValue()
                            + "   ");
                    break;
                case HSSFCell.CELL_TYPE_FORMULA: // 公式
                    System.out.print(cell.getCellFormula() + "   ");
                    break;
                case HSSFCell.CELL_TYPE_BLANK: // 空值
                    System.out.println(" ");
                    break;
                case HSSFCell.CELL_TYPE_ERROR: // 故障
                    System.out.println(" ");
                    break;
                default:
                    System.out.print("未知类型   ");
                    break;
            }

        }
        System.out.print("\n");
    }

写xls

    HSSFWorkbook workbook = null;
    workbook = new HSSFWorkbook();
    //获取参数个数作为excel列数
    int columeCount = 6;
    //获取List size作为excel行数
    int rowCount = 20;
    HSSFSheet sheet = workbook.createSheet("sheet name");
    //创建第一栏
    HSSFRow headRow = sheet.createRow(0);
    String[] titleArray = {"id", "name", "age", "email", "address", "phone"};
    for(int m=0;m<=columeCount-1;m++)
    {
        HSSFCell cell = headRow.createCell(m);
        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
        sheet.setColumnWidth(m, 6000);
        HSSFCellStyle style = workbook.createCellStyle();
        HSSFFont font = workbook.createFont();
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        short color = HSSFColor.RED.index;
        font.setColor(color);
        style.setFont(font);
        //填写数据
        cell.setCellStyle(style);
        cell.setCellValue(titleArray[m]);

    }
    int index = 0;
    //写入数据
    for(RowEntity entity : pRowEntityList)
    {
        //logger.info("写入一行");
        HSSFRow row = sheet.createRow(index+1);
        for(int n=0;n<=columeCount-1;n++)
            row.createCell(n);
        row.getCell(0).setCellValue(entity.getId());
        row.getCell(1).setCellValue(entity.getName());
        row.getCell(2).setCellValue(entity.getAge());
        row.getCell(3).setCellValue(entity.getEmail());
        row.getCell(4).setCellValue(entity.getAddress());
        row.getCell(5).setCellValue(entity.getPhone());
        index++;
    }

    //写到磁盘上
    try {
        FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
        workbook.write(fileOutputStream);
        fileOutputStream.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

写xlsx

和写xls类似,使用2007对应的对象即可。


http://www.niftyadmin.cn/n/1405382.html

相关文章

攻防世界-转轮机加密

看题目描述一直用栅栏密码&#xff0c;也没个结果 但是遗漏了一个重要信息&#xff1a;托马斯杰斐逊&#xff08;查了下这个人发现没什么用就放弃了&#xff09; 这是一个加密名杰斐逊转轮密码&#xff0c;没有解密器 查了下解密方式&#xff1a; 第一部分为加密表&#xf…

ActiveMQ的应用实例

ActiveMQ的应用实例 部署和启动ActiveMQ 去官网下载&#xff1a; http://activemq.apache.org/ 我下载的是apache-activemq-5.12.0-bin.tar.gz&#xff0c; 解压到本地目录&#xff0c;进入到bin路径下&#xff0c;运行activemq启动ActiveMQ。 运行方式&#xff1a; 启动 ./act…

攻防世界-stegano

这道题的线索挺隐蔽的 复制了文章&#xff0c;粘贴出去可以发现很多AB&#xff0c;并且只出现AB&#xff0c;摩斯密码也是只出现.-的 把A转化成. B转化成-

SparkSQL使用之JDBC代码访问Thrift JDBC Server

启动ThriftJDBCServer:cd $SPARK_HOME/sbinstart-thriftserver.sh &使用jdbc访问ThriftJDBCServer代码段&#xff1a;package com.luogankun.spark.sqlimport java.sql.DriverManagerimport java.sql.Connectionimport java.sql.PreparedStatement/*** JDBC代码访问Thrift …

攻防世界-坚持60s

下载后就是一个这样的动态图&#xff0c;做misc题&#xff0c;习惯性用kali的工具查看 法一&#xff1a; jd-gui进行jar文件的反编译查找flag&#xff08;没试过&#xff09; 法二&#xff1a; binwalk -e 文件名 把文件获取出来 依次寻找class文件找到flag base64解密

jdbc调用sparksql

将hive-site.xml拷贝到Spark目录下conf文件夹 local模式spark-sql --driver-class-path /usr/local/hive-1.2.1/lib/mysql-connector-java-5.1.31-bin.jar或者 需要在$SPARK_HOME/conf/spark-env.sh中的SPARK_CLASSPATH添加jdbc驱动的jar包export export SPARK_CLASSPATH$SPARK…

攻防世界-gif

把文件下载后得到两个文件 上一个里面是个有问题的jpg文件 下一个里面有很多图片&#xff0c;一白一黑&#xff0c;有点像二进制&#xff08;一开始想过摩斯密码&#xff0c;但是没有说在哪加空格&#xff0c;不好弄&#xff09; 白为黑为1&#xff08;8个空一下&#xff0c;…

用Java代码通过JDBC连接Hiveserver2

Hive0.11.0版本提供了一个全新的服务&#xff1a;HiveServer2&#xff0c;这个很好的解决HiveServer存在的安全性、并发性等问题。这个服务启动程序在${HIVE_HOME}/bin/hiveserver2里面&#xff0c;你可以通过下面的方式来启动HiveServer2服务&#xff1a;$HIVE_HOME/bin/hives…