public class RandomNumberGenerator {
/**
* 读取Excel数据存放到List
* @param path "文件路径"
* @param sheetIndex 读取的sheet表下标,sheet1 = 0
* @return
*/
public static List<String> readExcel(String path, int sheetIndex) {
List<String> excelDataList = new ArrayList<String>();
try {
InputStream inputStream = new FileInputStream(path);
File file;
// 通过文件流工厂方式来处理,用来防止NotOLE2FileException
Workbook workbook = WorkbookFactory.create(inputStream);
if (inputStream == null || workbook == null) {
return excelDataList;
}
// 读取Sheet
Sheet sheet = workbook.getSheetAt(sheetIndex);
if (sheet == null) {
return excelDataList;
}
// 循环处理每一行,会读取到第一行
int rows = sheet.getPhysicalNumberOfRows();
int minCells = 0;
int maxCells = 0;
// 获取最小列数和最大列数,以第一行为准
if (rows >= 1) {
minCells = sheet.getRow(0).getFirstCellNum();
maxCells = sheet.getRow(0).getLastCellNum();
}
for (int i = 0; i < rows; i++) {
// 得到当前行
Row row = sheet.getRow(i);
String s = null;
for (int j = minCells; j < maxCells; j++) {
// 每一个单元格
Cell cell = row.getCell(j);
s = cell.toString();
}
excelDataList.add(s);
}
inputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return excelDataList;
}
@Test
public void test(){
String path = "文件路径";
int sheetIndex = 0;
String str;
List<String> list = RandomNumberGenerator.readExcel(path, sheetIndex);
Workbook workbook = new XSSFWorkbook(); // 创建一个新的Excel工作簿
Sheet sheet = workbook.createSheet("sheet单元表名"); // 创建一个新的工作表
for (int i = 0; i<2795 ; i++){
str = list.get(i);
//todo 对str数据去进行处理
Row row = sheet.createRow(i); // 在excel表中创建第一行
Cell cell = row.createCell(1); // 在第一行创建第一个单元格
cell.setCellValue(str); // 将JSON字符串存储到单元格中
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
workbook.write(fileOut);
//完成之后会在项目根目录下生成名为workbook.xlsx文档
} catch (IOException e) {
e.printStackTrace();
}
}
}
}