【Java】之获取CSV文件数据以及获取Excel文件数据

一、获取CSV文件数据

 

 

复制代码
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.testng.SkipException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class DataProviderTest {


    public Iterator<Object[]> readDataFromCSV(String path){
        //  读取CSV文件方法
        List<Object[]> list = new ArrayList<Object[]>();
        try {
            FileReader is = new FileReader(new File(path));
            BufferedReader br = new BufferedReader(is);
            while(br.ready()){
                list.add(br.readLine().split(","));
            }
            return list.iterator();
        } catch (Exception e) {
            throw new SkipException(e.getMessage());
        }
    }


    @DataProvider
    public Iterator<Object[]> getData1() throws UnsupportedEncodingException {
        //  获取CSV方法
        String path = this.getClass().getResource("test.xlsx").getPath();
        String path1 = java.net.URLDecoder.decode(path, "utf-8");
        System.out.println(path1);
        return readDataFromCSV(path1);

    }


    @Test(dataProvider = "getData1")
    public void test1(String text1,String text2) {
        //  打印CSV数据
        System.out.println(text1);
        System.out.println(text2);

    }
}
复制代码

 

 

二、获取Excel文件数据

 

 

复制代码
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.testng.SkipException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;




/**
 * @author zc
 * @date 2021-01-21 17:18
 */

public class DataProviderTest {


    public Object[][] getDataFromExcel(String excelPath){
        //  读取excel文件方法
        Workbook book;
        try {
            FileInputStream f = new FileInputStream(excelPath);
            book = new XSSFWorkbook(f);
            Sheet sheet = book.getSheetAt(0);
            int rowInExcel = sheet.getPhysicalNumberOfRows();
            int columnInExcel = sheet.getRow(0).getPhysicalNumberOfCells();
            String[][] obj = new String[rowInExcel-2][columnInExcel];
            for (int row = 2; row < rowInExcel; row++) {
                for (int col = 0; col < columnInExcel; col++) {
                    sheet.getRow(row).getCell(col).setCellType(Cell.CELL_TYPE_STRING);
                    obj[row-2][col] = sheet.getRow(row).getCell(col).getStringCellValue();
                    System.out.println(obj[row-2][col]);
                }
            }
            return obj;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            throw new SkipException(e.getMessage());
        }
    }


    @DataProvider
    public Object[][] getData2() throws UnsupportedEncodingException {
        //  获取excle方法
        String path = this.getClass().getResource("test.xlsx").getPath();
        String path1 = java.net.URLDecoder.decode(path, "utf-8");
        System.out.println(path1);
        return getDataFromExcel(path1);
    }



    @Test(dataProvider = "getData2")
    public void test1(String text1,String text2) {
        //  打印CSV数据
        System.out.println(text1);
        System.out.println(text2);

    }
}
复制代码

 

posted @   Owen_ET  阅读(892)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 模様 (TV size ver.) Ivy to Fraudulent Game
  3. 3 河口恭吾
  4. 4 愛してる 高鈴
  5. 5 一生所爱 卢冠廷,莫文蔚
  6. 6 世间美好与你环环相扣 柏松
  7. 7 理想三旬 陈鸿宇
  8. 8 不浪漫罪名 王杰
  9. 9 樱花树下 张敬轩
  10. 10 因为你在 达闻西乐队,福禄寿FloruitShow
  11. 11 悬溺 葛东琪
不浪漫罪名 - 王杰
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 陈少琪

作曲 : 王杰

没有花 这刹那被破坏吗

没有花 这刹那被破坏吗

无野火都会温暖吗

无烟花一起庆祝好吗

若爱恋 彷似戏剧那样假

若爱恋 彷似戏剧那样假

如布景一切都美化

连相拥都参照主角吗

你说我未能定时 令你每天欢笑一次

你说我未能定时 令你每天欢笑一次

我没说出一句美丽台词

是你心中一种缺陷定义

流进了眼角里的刺

为何不浪漫亦是罪名 为何不轰烈是件坏事情

为何不浪漫亦是罪名 为何不轰烈是件坏事情

从来未察觉我每个动作 没有声都有爱你的铁证

为何苦不浪漫亦是罪名 为何总等待着特别事情

从来未察觉我语气动听 在我呼吸声早已说明

甚么都会用一生保证

没有花 这刹那被破坏吗

没有花 这刹那被破坏吗

无野火都会温暖吗

无烟花一起庆祝好吗

若爱恋 彷似戏剧那样假

若爱恋 彷似戏剧那样假

如布景一切都美化

连相拥都参照主角吗

你说我未能定时 令你每天欢笑一次

你说我未能定时 令你每天欢笑一次

我没说出一句美丽台词

是你心中一种缺陷定义

流进了眼角里的刺

为何不浪漫亦是罪名 为何不轰烈是件坏事情

为何不浪漫亦是罪名 为何不轰烈是件坏事情

从来未察觉我每个动作 没有声都有爱你的铁证

为何苦不浪漫亦是罪名 为何总等待著特别事情

从来未察觉我语气动听 在我呼吸声早已说明

什么都会用一生保证

为何不浪漫亦是罪名 为何不轰烈是件坏事情

为何不浪漫亦是罪名 为何不轰烈是件坏事情

从来未察觉我每个动作 没有声都有爱你的铁证

为何苦不浪漫亦是罪名 为何总等待著特别事情

从来未察觉我语气动听 在我呼吸声早已说明

什么都会用一生保证

点击右上角即可分享
微信分享提示