版权声明:本文为博主原创文章,转载请说明出处。 https://blog.csdn.net/qq_42361748/article/details/88709372
将txt文件中的内容,按行读取,写入到Excel中,需要用到的jar
package com.shang;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
/**
* 按行读取txt格式文件,并将内容写入到Excel中
*
* @author shang
* @date 2019年3月21日
*/
public class FileToArray {
public static void main(String[] args) {
ArrayList<String> arrayList = toArrayByFile("F:/Desktop/目录列表.txt");
creatExcel(arrayList, 5);
}
/**
* 将文件内容写入到数组中
*
* @param filePath 文件的路径
* @return 数据集合
*/
public static ArrayList<String> toArrayByFile(String filePath) {
// 使用ArraryList用来存取每行读取到的数据
ArrayList<String> arrayList = new ArrayList<>();
// 获取文件
try {
File file = new File(filePath);
InputStreamReader streamReader;
streamReader = new InputStreamReader(new FileInputStream(file));
BufferedReader bf = new BufferedReader(streamReader);
String str;
while ((str = bf.readLine()) != null) {
// 如果不需要去掉后去则arrayList.add(str);
arrayList.add(str.substring(0, str.lastIndexOf(".")));
}
bf.close();
streamReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return arrayList;
}
/**
* 创建Excel表格,将数据写入表格中
*
* @param list 数据的集合
* @param n 数据显示的列数
*/
public static void creatExcel(List<String> list, int n) {
// 创建workbook
HSSFWorkbook wb = new HSSFWorkbook();
// 创建工作表格
HSSFSheet sheet = wb.createSheet("人员名单");
HSSFCell cell = null;
HSSFCellStyle style = wb.createCellStyle();
// 设置水平居中
style.setAlignment(HorizontalAlignment.CENTER);
// 设置垂直居中
style.setVerticalAlignment(VerticalAlignment.CENTER);
// 为表格添加边框
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
style.setBorderTop(BorderStyle.THIN);
// 获得字体对象
HSSFFont bodyFont = wb.createFont();
// 设置字体大小
bodyFont.setFontHeightInPoints((short) 16);
// 将字体设置进样式
style.setFont(bodyFont);
// 根据列数和写入的数据数判断行数
int m = 0;
int k = 0;
if (list.size() % n == 0) {
m = list.size() / n;
} else {
m = list.size() / n + 1;
}
for (int i = 0; i < m + 1; i++) {
// 创建行
HSSFRow row = sheet.createRow(i);
// 设置行高
row.setHeightInPoints(25);
// 创建列并写入数据
for (int j = 0; j < n; j++) {
cell = row.createCell(j);
// 将样式设置进单元格
cell.setCellStyle(style);
if (i == 0) {
// 设置标题单元格内容
cell.setCellValue("名单" + (j + 1));
} else if (k < list.size()) {
// 设置表格内容
cell.setCellValue(list.get(k));
}
k++;
}
}
// 设置自适应列宽
for (int g = 0; g < n; g++) {
sheet.autoSizeColumn(g);
}
// 将生成的Excel文件保存到指定的路径下
try {
FileOutputStream fos = new FileOutputStream("F:/Desktop/名单.xlsx");
wb.write(fos);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Excel文件创建和写入数据成功!");
}
}
生成的表格如下: