java导出生成excel文件

package excel;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * @Auther: lyf
 * @Date: 2019-08-13 12:51
 * @Description: 用到的jar包是这个
 * <dependency>
 * <groupId>org.apache.poi</groupId>
 * <artifactId>poi</artifactId>
 * <version>4.0.0</version>
 * </dependency>
 * HSSFWorkbook同时支持'xlsx'和'xls'这两种文件格式
 * 这里的演示比较简单,只是告诉自己有这回事,以后需要更加复杂的功能可以自己去看看源码
 * 或者再看看其他人的博客
 */
public class ExcelTest {

    //生成一个'xlsx'后缀的文件
    @Test
    public void test1() {
        try {
            //创建一个workbook对象,可以理解为是一个excel文件
            Workbook workbook = new HSSFWorkbook();
            //创建sheet,就是excel文件中的工作表
            Sheet sheet = workbook.createSheet("sheet1");
            //创建行,是从第0行开始的
            Row head = sheet.createRow(0);
            //创建单元格,每一行的数据,第一个单元格的角标也是0
            head.createCell(0).setCellValue("姓名");
            head.createCell(1).setCellValue("年龄");
            head.createCell(2).setCellValue("手机号码");
            for (int i = 1; i <= 100; i++) {
                Row row = sheet.createRow(i);
                row.createCell(0).setCellValue("abc");
                row.createCell(1).setCellValue(i);
                //有一个应用场景忘记了,如果字符串得不到你想要的显示效果的话
                //可以试试加上'\t'制表位,估计就能得出正确的结果了
                row.createCell(2).setCellValue("19362635829");
            }
            workbook.write(new FileOutputStream(new File("G://用户信息数据.xls")));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //读取excel文件
    @Test
    public void test2() {
        try {
            Workbook workbook = new HSSFWorkbook(new FileInputStream(new File("G://用户信息数据.xls")));
            //获取到第一个工作表
            Sheet sheet = workbook.getSheetAt(0);
            if (sheet == null) {
                return;
            }
            //获取到表格的行数,如果一行数据都没有,那么取值为0,一行数据就是1
            int rows = sheet.getLastRowNum();
            if (rows > 0) {
                //获取第一行数据
                Row head = sheet.getRow(0);
                System.out.println(head.getCell(0).getStringCellValue() + "\t" + head.getCell(1).getStringCellValue() + "\t" + head.getCell(2).getStringCellValue());
                for (int i = 1; i < rows; i++) {
                    Row row = sheet.getRow(i);
                    //获取单元格中的数据
                    //获取字符串使用getStringCellValue()方法
                    //获取数字使用getNumericCellValue方法,然后再转成自己需要的数字格式
                    System.out.println(row.getCell(0).getStringCellValue() + "\t" + ((int) row.getCell(1).getNumericCellValue()) + "\t" + row.getCell(2).getStringCellValue());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值