ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ExcelToTxt 工具类

2021-09-11 13:33:07  阅读:154  来源: 互联网

标签:java poi ExcelToTxt io org import 工具 usermodel


 

工具类

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.math.BigDecimal;
import java.math.RoundingMode;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ExcelToTxt {

	static Logger logger = LoggerFactory.getLogger(ExcelToTxt.class);

	public static void main(String[] args) {
		String excelPath = "C:\\test\\test.xls";
		String txtPath = "C:\\test\\test.txt";
		excelToTxt(excelPath, txtPath);
	}

	public static void excelToTxt(String excelPath, String txtPath) {

		StringBuffer sb = new StringBuffer();
		Workbook workbook = readExcel(excelPath);
		Sheet sheet = workbook.getSheetAt(0);

		// 获取最大行数
		int rownum = sheet.getLastRowNum();
		// 获取最大列数
		Row row = sheet.getRow(rownum);
		int colnum = row.getLastCellNum();
		for (int i = 0; i <= rownum; i++) {
			row = sheet.getRow(i);
			if (row != null) {
				for (int j = 0; j < colnum; j++) {
					sb.append(getCellFormatValue(row.getCell(j)) + ",");
				}
			} else {
				break;
			}
			sb.append("\r\n");
		}

		WriteToFile(sb.toString(), txtPath);

	}

	// 读取excel
	private static Workbook readExcel(String filePath) {
		Workbook workbook = null;
		try {
			InputStream is = new FileInputStream(filePath);

			if (filePath.contains("xlsx")) {
				workbook = new XSSFWorkbook(is);
			} else {
				workbook = new HSSFWorkbook(is);
			}
		} catch (IOException e) {
			logger.error(e.getMessage(), e);
		}
		return workbook;
	}

	private static Object getCellFormatValue(Cell cell) {
		Object cellValue = null;
		if (cell != null) {
			// 判断cell类型
			switch (cell.getCellType()) {
			case NUMERIC: {
				Double cellValue1 = cell.getNumericCellValue();
				cellValue = new BigDecimal(cellValue1).setScale(2, RoundingMode.HALF_UP);
				break;
			}
			case STRING: {
				cellValue = cell.getStringCellValue();
				break;
			}
			default:
				cellValue = "";
			}
		} else {
			cellValue = "";
		}
		return cellValue;
	}

	/**
	 * 生成文件
	 */
	private static void WriteToFile(String str, String filePath) {
		File file = new File(filePath);
		if (file.exists()) {
			file.delete();
		}
		BufferedWriter bw = null;
		try {
			FileOutputStream out = new FileOutputStream(filePath, true);// true,表示:文件追加内容,不重新生成,默认为false
			bw = new BufferedWriter(new OutputStreamWriter(out, "GBK"));
			bw.write(str += "\r\n");// 换行
			bw.flush();
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

 

标签:java,poi,ExcelToTxt,io,org,import,工具,usermodel
来源: https://www.cnblogs.com/dreamstar99/p/15250712.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有