其他分享
首页 > 其他分享> > ExcelToTxt 工具类

ExcelToTxt 工具类

作者:互联网

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://blog.csdn.net/dreamstar613/article/details/120236541