hadoop读取Excel文件转换成txt文件

功能说明:从hdfs读取excel文件,经过poi转换成txt文本文件并输出成hdfs文件

一、引入jar包

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.14</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.14</version>
</dependency>

二、代码实现

package operator.excel;

import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;

import java.io.File;import java.io.IOException;import java.io.InputStream;

/** * @ClassName: ExcelInputFormat * @Description: * @Author: mashiwei * @Date: 2017/6/30 */public class ExcelInputFormat {

public static void main(String[] args) throws IOException {        Configuration config = new Configuration();        InputStream inputStream;        String[] strArrayofLines;        String output = "/kettle/excel/test.txt";        String input = "/kettle/excel/test.xls";        FileSystem fileSystem = FileSystem.get(config);        FSDataOutputStream out = fileSystem.create(new Path(output));        inputStream = fileSystem.open(new Path(input));//       strArrayofLines = ExcelParser.parseExcelData(inputStream);       strArrayofLines = ExcelParser.parseExcelData(inputStream,new File(input));        for (String str:strArrayofLines) {            System.out.println("------"+str);            out.writeBytes(str);            out.writeUTF("\n");        }        inputStream.close();        out.close();    }}

  

package operator.excel;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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 java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @ClassName: ExcelParser
 * @Description:
 * @Author: mashiwei
 * @Date: 2017/6/30
 */
public class ExcelParser {
    private static final Log logger = LogFactory.getLog(ExcelParser.class);
    public static void checkFile(File file) throws IOException{
        //判断文件是否存在
        if(null == file){
            logger.error("文件不存在!");
            throw new FileNotFoundException("文件不存在!");
        }
        //获得文件名
        String fileName = file.getAbsolutePath();
        //判断文件是否是excel文件
        if(!fileName.endsWith("xls") && !fileName.endsWith("xlsx")){
            logger.error(fileName + "不是excel文件");
            throw new IOException(fileName + "不是excel文件");
        }
    }
    /**
     * 解析is
     *
     * @param is 数据源
     * @return String[]
     */
    public static String[] parseExcelData(InputStream is,File file) {

        //获得文件名
        String fileName = file.getAbsolutePath();
        try {
            checkFile(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 结果集
        List<String> resultList = new ArrayList<String>();
        Workbook workbook = null;
        try {
            // 获取Workbook
            if(fileName.endsWith("xls")){
                //2003
                workbook = new HSSFWorkbook(is);
            }else if(fileName.endsWith("xlsx")) {
                //2007
                workbook = new XSSFWorkbook(is);
            }
                // 获取sheet
            Sheet sheet = workbook.getSheetAt(0);

            Iterator<Row> rowIterator = sheet.iterator();

            while (rowIterator.hasNext()) {
                // 行
                Row row = rowIterator.next();
                // 字符串
                StringBuilder rowString = new StringBuilder();

                Iterator<Cell> colIterator = row.cellIterator();
                while (colIterator.hasNext()) {
                    Cell cell = colIterator.next();

                    switch (cell.getCellType()) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            rowString.append(cell.getBooleanCellValue() + ",");
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            rowString.append(cell.getNumericCellValue() + ",");
                            break;
                        case Cell.CELL_TYPE_STRING:
                            rowString.append(cell.getStringCellValue() + ",");
                            break;
                    }

                }
                String str = rowString.delete(rowString.lastIndexOf(","),rowString.lastIndexOf(",")+1).toString();

                resultList.add(str);
//                resultList.add(rowString.toString());
            }
        } catch (IOException e) {
            logger.error("IO Exception : File not found " + e);
        }

        return resultList.toArray(new String[0]);
    }

}

  

时间: 2024-07-30 19:14:39

hadoop读取Excel文件转换成txt文件的相关文章

用Java将Excel的xls和xlsx文件转换成csv文件的方法, XLS2CSV, XLSX2CSV

利用poi将excel文件后缀为.xls .xlsx的文件转换成txt/csv文本文件 首先,引入所需的jar包: <dependencies> 2 <dependency> 3 <groupId>net.sf.opencsv</groupId> 4 <artifactId>opencsv</artifactId> 5 <version>2.1</version> 6 </dependency> 7

c#程序将excel文件转换成xml文件

要程序你自己去组装去,我只写两个部分,一个是读Excel的部分,然后是写入到xml的1) 从指定的excel读出信息string strConn="provider=Microsoft.Jet.OLEDB.4.0;data source=你的Excel文件.xls;Extended Properties=Excel 8.0;";DataSet ds=new DataSet();System.Data.OleDb.OleDbConnection oleConn=new System.Da

在Linux下将HTML文件转换成PDF文件

今天要写一个上交的作业,本来是想用Office Word来写的,但是,我的Office貌似不能用了,但是,Linux下的LibreOffice写出的文档,在打印的时候是经常出现乱码的.所以,后来想到可以 利用HTML写出格式比较好的文档,所以,想到能不能先写出一份比较规范的文档出来,然后转换成PDF文档,因为如果转换成PDF文档,打印,浏览都会比较方便,并且在转换成PDF之后,在打印的时候也不容易出现乱码的现象,经过搜索发现了一个比较不错的html转pdf文件的工具wkhtmltopdf, 在U

如何将一批pdf文件转换成jpg文件

从事设计行业,经常需要从网络上搜集一些图片素材,可是当我们下载的素材是pdf格式的时候,我们该怎么办呢?是不是需要将pdf格式转换成jpg或其它图片格式时才可以加以运用呢?今天小编与大家分享的技巧就是:如何将一批pdf文件转换成jpg文件.    工具/原料  pdf转jpg工具:http://pan.baidu.com/s/1o7ddEcU 方法/步骤  1.首先我们需要从网络上下载一个pdf转jpg工具,同时将它安装在自己的电脑中,并创建快捷方式. 2.双击快捷方式进入工具——选择“pdf图

&lt;p&gt;&lt;span style=&quot;font-size:14px&quot;&gt;近期须要批量将PNM&amp;#26684;式的文件转换成GIF文件。我尝试了例如以下的图像转换工具:&lt;/span&gt;&lt;/p&gt;

近期须要批量将PNM格式的文件转换成GIF文件.我尝试了例如以下的图像转换工具: ImageBatch:全然免费,但只支持PNG JPEG BMP GIF四种格式 OfficeConverter:在线转换软件,支持全部图像格式的相互转换.大量处理图像时须要支付一定费用,否则效率低 Pixillion:支持全部格式,试用版只最多支持5个文件为一组batch的处理,使用100次以后必须付费使用 因为上述工具均不能满足我的须要(不想使用付费软件),我尝试搜索PNM转GIF文件的软件包,发现能够安装Py

pdf转换成word转换器免费版是一款功能强大好用的pdf文件转换成word文件的软件

pdf转换成word转换器免费版是一款功能强大好用的pdf文件转换成word文件的软件,界面简单,功能稳定,支持批量转换,操作起来非常方便,支持多种流行文档格式之间转换.完美支持pdf文件转换成word文档,转换后可再次编辑,支持图文混合排版,支持表格转换,支持批量转换,操作简单.pdf转换成word转换器免费不限页数可以很好的转换原来pdf文档中的文字.图片.表格 .超链接.布局,使其转换成的word文档排版与原有文档一样.pdf转换成word转换器是一款小巧.方便且免费的pdf转Word工具

【转】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.

如何把excel文件转换成pdf文件

我们经常需要将excel文档转换成pdf文件,这是一种最简单.最方便的方法,视频播放地址:http://v.youku.com/v_show/id_XODM2MTk0NzI0.html

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

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