读取TXT文件内容,生成Excel文件

 
需要用到jar文件:poi-3.0.1.jar
package office;

/**
 * 解析txt文件,输出到Excel文件
 * @author JavaAlpha
 * @date 2011-7-28
 * @version V 1.0
 */

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class WordReader {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		readFileByLine("E:/1.txt");
	}

	/**
	 * 以行为单位读取文件(文本文件)
	 * 
	 * @param filePath
	 */
	public static void readFileByLine(String filePath) {
		File file = new File(filePath);
		BufferedReader bd = null;
		Map<String, String> str = new HashMap<String, String>();
		String s1 = "";
		String s2 = "";

		try {
			bd = new BufferedReader(new InputStreamReader(new FileInputStream(file), "gb2312"));// 编码转换(关键的地方)

			String temp = "";
			int line = 1;
			while ((temp = bd.readLine()) != null) {
				if (temp.length() > 0) {
					s1 = temp.substring(0, 3);
					s1 = s1.trim();
					s2 = temp.substring(4);
					s2 = s2.trim();
					str.put(s1, s2);
				}
				++line;
			}
			createExcel(str);

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (bd != null)
					bd.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 输出Excel文件,输出格式为多行两列
	 * @param map
	 */
	static void createExcel(Map<String, String> map) {
		try {
			// 新建一输出文件流
			FileOutputStream fOut = new FileOutputStream("e:/2.xls");
			File file = new File("e:/2.xls");
			if (file.exists()) {
				file.delete();
			}
			// 创建新的Excel 工作簿
			HSSFWorkbook workbook = new HSSFWorkbook();
			// 在Excel工作簿中建一工作表,其名为缺省值
			// 如要新建一名为"联系人用户名和电话"的工作表,其语句为:
			HSSFSheet sheet = workbook.createSheet("联系人用户名和电话");
			HSSFRow row = null;
			// 在索引0的位置创建单元格(左上端)
			HSSFCell cell1 = null;
			HSSFCell cell2 = null;

			Iterator iter = map.entrySet().iterator();
			int i = 0;

			while (iter.hasNext()) {
				Map.Entry entry = (Map.Entry) iter.next();
				Object key = entry.getKey();
				Object val = entry.getValue();
				row = sheet.createRow((short) i++);
				cell1 = row.createCell((short) 0);
				cell2 = row.createCell((short) 1);
				// 定义单元格为字符串类型
				cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
				cell2.setCellType(HSSFCell.CELL_TYPE_STRING);

				// 在单元格中输入一些内容
				cell1.setCellValue(key.toString());
				cell2.setCellValue(val.toString());

				if (i > 255) {
					break;
				}
			}

			// 把相应的Excel 工作簿存盘
			workbook.write(fOut);
			fOut.flush();
			// 操作结束,关闭文件
			fOut.close();
			System.out.println("文件生成...");

		} catch (Exception e) {
			System.out.println("出现异常: " + e);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值