按行读取txt格式文件,并将内容写入到Excel中

版权声明:本文为博主原创文章,转载请说明出处。 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文件创建和写入数据成功!");
	}
}

生成的表格如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42361748/article/details/88709372
今日推荐