【转】java将excel文件转换成txt格式文件

在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件。下面代码里面提供对xls、xlsx两种格式的excel文件解析,并写入到一个新的txt文件中,数据以分隔符逗号","隔开。

excel文件如图所示:

转换后的txt文件:

需要依赖4个jar包:

package com.xuan.excel;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
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;

/**
* <p>版权所有:版权所有(C) 2014-2099</p>
* ──────────────────────────────────
* <p>作    者:青莲剑仙</p>
* ──────────────────────────────────
* <p>将excel转成TXT文本<p>
**/
public class ExcelToTxt {

    private static File [] getFiles(String path){
        File file = new File(path);
        // get the folder list
        File[] array = file.listFiles();
        return array;
    }

    public static void main(String[] args) throws IOException {
        File[] files=getFiles("D:\\keyword");
        for(int i=0;i<files.length;i++){
            if (files[i].isFile()) {
                System.out.println("f=="+files[i].getPath()+"  "+files[i].getName());
                publishTxt(files[i].getPath());
            }
            if (files[i].isDirectory()) {
                System.out.println("d=="+files[i].getPath()+"  "+files[i].getName());
                File[] files2=getFiles(files[i].getPath());
                for(int j=0;j<files2.length;j++){
                    publishTxt(files2[j].getPath());
                }

            }
        }
    }

    public static void publishTxt(String excelPath){
        String columns[] = { "交易时间", "记账日期", "银行流水号", "商户流水号", "订单号", "订单状态", "付款方账号/客户号", "付款方户名",
                "订单金额", "交易金额", "手续费", "结算金额", "柜台代码", "发卡行/通道", "支付卡种", "交易类型", "期数", "授权号", "项目号",
                "基本户", "备注一", "备注二" };
        Workbook wb = null;
        Sheet sheet = null;
        Row row = null;
        List<Map<String, String>> list = null;
        String cellData = null;
        String fileType=excelPath.substring(excelPath.indexOf(‘.‘) + 1);

        wb = readExcel(excelPath);
        if (wb != null) {
            // 用来存放表中数据
            list = new ArrayList<Map<String, String>>();
            // 获取第一个sheet
            sheet = wb.getSheetAt(0);
            // 获取最大行数
            int rownum = sheet.getPhysicalNumberOfRows();
            // 获取第二行
            row = sheet.getRow(1);
            // 获取最大列数
            int colnum = row.getPhysicalNumberOfCells();
            for (int i = 0; i < rownum; i++) {
                Map<String, String> map = new LinkedHashMap<String, String>();
                row = sheet.getRow(i);
                if (row != null) {
                    for (int j = 0; j < colnum; j++) {
                        cellData = (String) getCellFormatValue(row.getCell(j));
                        map.put(columns[j], cellData);
                    }
                } else {
                    break;
                }
                list.add(map);
            }
        }
        // 遍历解析出来的list
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < list.size(); i++) {
            for (Entry<String, String> entry : list.get(i).entrySet()) {
                String value = entry.getValue();
                sb.append(value+",");
            }
            sb.append("\r\n");
        }
        try {
            WriteToFile(sb.toString(), excelPath.replace(".xlsx", ".txt"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println("*************EXCEL转成TXT格式成功*************");

    }

    // 读取excel
    public static Workbook readExcel(String filePath) {
        Workbook wb = null;
        if (filePath == null) {
            return null;
        }
        String extString = filePath.substring(filePath.lastIndexOf("."));
        InputStream is = null;
        try {
            is = new FileInputStream(filePath);
            if (".xls".equals(extString)) {
                return wb = new HSSFWorkbook(is);
            } else if (".xlsx".equals(extString)) {
                return wb = new XSSFWorkbook(is);
            } else {
                return wb = null;
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return wb;
    }

    public static Object getCellFormatValue(Cell cell) {
        Object cellValue = null;
        if (cell != null) {
            // 判断cell类型
            switch (cell.getCellType()) {
            case Cell.CELL_TYPE_NUMERIC: {
                cellValue = String.valueOf(cell.getNumericCellValue());
                break;
            }
            case Cell.CELL_TYPE_FORMULA: {
                try{
                // 判断cell是否为日期格式
                if (DateUtil.isCellDateFormatted(cell)) {
                    // 转换为日期格式YYYY-mm-dd
                    cellValue = cell.getRichStringCellValue().getString();//cell.getDateCellValue();
                } else {
                    // 数字
                    cellValue =cell.getRichStringCellValue().getString(); //String.valueOf(cell.getNumericCellValue());
                }
                }catch(Exception ex){}
                break;
            }
            case Cell.CELL_TYPE_STRING: {
                cellValue = cell.getRichStringCellValue().getString();
                break;
            }
            default:
                cellValue = "";
            }
        } else {
            cellValue = "";
        }
        return cellValue;
    }

    /**
     * 生成文件
     * @param str
     * @param filePath
     * @throws IOException
     */

    public static void WriteToFile(String str, String filePath) throws IOException {
        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();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            bw.close();
        }
    }
}

from:https://blog.csdn.net/usuallyuser/article/details/81217122

原文地址:https://www.cnblogs.com/xuan52rock/p/9525874.html

时间: 2024-10-07 07:47:18

【转】java将excel文件转换成txt格式文件的相关文章

如何将pdf文件转换成cad格式文件

pdf文件是一个封闭性文件,文件不仅不容易编辑修改,而且还可能被加密了,那么如何将pdf文件转换成cad格式文件呢? 下面小编教大家使用pdf转换器实现以上操作,具体步骤如下. 第一步:搜索迅捷pdf在线转换器(http://app.xunjiepdf.com/pdf2cad),找到相关页面点击进入在线网站主页面,进入页面后,用我们鼠标点到文档转换,找到CAJ转Word那个栏目. 第二步:点击"选择文件"选择需要处理的文件.如果想要一次性处理多个文件,那么我们可以继续添加文件(批量转换

CAD文件转换成DWF格式文件怎么在转换器中转换?

CAD文件转换成DWF格式文件怎么在转换器中转换?大家都知道DWF文件是一种高度压缩.开放.安全的文件格式,它可以将丰富的设计数据高效的分发给需要查看.评审或者打印这些数据的人看,因为在编辑器中编辑完的图纸都是dwg格式的,所以就需要将CAD图纸进行转换,那CAD文件转换成DWF格式文件怎么在转换器中转换?具体要怎么来进行操作?下面小编就来教教大家,想要了解的朋友也可以一起来看看,希望能够帮助到你们. 第一步:打开电脑,在电脑桌面上任意的打开一个浏览器,在浏览器的搜索框中搜索迅捷CAD转换器,然

python:将xml格式文件转换成json格式文件

由于json格式的文件在处理起来,有很强的便利性,而工作中每天产生大量的xml格式的文件,所以有需求将xml格式的文件转换成json格式的文件.下面直接贴出代码,有两个版本,根据需求自由选择: #!/usr/bin/python # -*- coding: utf-8 -*- #Function:Xml_To_Json #version 1.0 #Author: Herman #需要用到的两个模块 import xmltodict; import json; #定义函数 def pythonXm

Excel文件转换成PDF格式如何操作

Excel文件相信对于办公一族的人来说是在熟悉不过了.每天多多少少都要处理到它,像数据之类的文件一般都保存在Excel文件中.当然有时候考虑到一些因素需要将Excel文件转换成PDF格式,这样的文件格式转换我们该怎么操作呢?不知道的伙伴不妨试下下面这种方法 ,希望能帮助到大家! 1:想要完整的进行格式间的转换,我们可以选择在电脑端进行操作,将Excel转换PDF格式的话可以利用到辅助型的工具.进入到浏览器搜索相关软件就可以进行安装.2:进入PDF转换器的主页面.可以清晰明了的看到它许多PDF功能

如何将PDF文件转换成TXT文档

相信大家都知道什么是PDF文件,可是在使用PDF文件的时候我们常常会碰到一个难题,就是将PDF文件转换成TXT或者Word文档进行编辑,今天就给大家分享一种简单的转换方法. 1.先打开手机,可借助手机上的工具--PDF转换器,可在应用市场上搜索下载. 2.打开PDF转换器,以PDF转TXT为例,点击"PDF转换"此页面,点击"PDF转换TXT". 3.再添加需要转换的PDF文件,点击"全部文件",可在这里找到手机里保存的PDF文件,然后进行添加.

Python:将utf-8格式的文件转换成gbk格式的文件

需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: def ReadFile(filePath,encoding="utf-8"): with codecs.open(filePath,"r",encoding) as f: return f.read() def WriteFile(filePath,u,encoding="gbk"): with codecs.open(filePath,"w",encodi

linux环境下deb格式文件转换成rpm格式

以 alien_8.87.tar.gz 为例: 下载.安装 alien_8.87.tar.gz [[email protected] ~]# wget http://ftp.de.debian.org/debian/pool/main/a/alien/alien_8.87.tar.gz [[email protected] ~]# tar zxvf alien_8.87.tar.gz [[email protected] ~]# cd alien [[email protected] alien

C# Tips: 将 VS2012 / VS2013 的.sln文件、project文件转换成 VS2010格式

原来有一些VS2013的工程文件(.sln..csproj),使用.Net 4.0.现需要将它们转换成VS2010格式. 经实验,办法如下: (1) 在Solution文件(.sln)中: 把文件头部这样的行: Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2013 把它们替换成: Microsoft Visual Studio Solution File, Format Version 1

怎么将PDF格式文件转换成CAD格式呢?

怎么将PDF格式文件转换成CAD格式呢?在日常生活中,PDF和CAD格式的文件我们都不少见,那我们应该使用什么办法将这两个格式的文件进行转换呢?今天小编就要来教大家的就是怎么将PDF格式的文件转换成CAD格式的全部操作了,希望被采纳! 第一步:首先要打开你们电脑上面的CAD转换器软件,如果你们电脑上面没有这样一款软件的话,你们就需要去到官网上面的进行搜索下载了!小编是用的就是这款"迅捷CAD转换器"软件!第二步:将软件完成下载之后安装到你们的电脑桌面上然后就可以进行操作使用了!之后点击