1、需求背景:

有时需将一份大的excel文件导入到hdfs文件,用POI组件来导入excel文件并输出成txt文本,此时一些单元格中带有分行字符的就给输出带来麻烦,一般MR是按照行来处理,所以需要将单元格内的文本清除掉分行字符,变成一行;

2、解决思路:

excel单元格输入时的回车符,有软回车Alt+Enter和硬回车Enter,对应的ASCII码如下表:

如此,只要替换对应字符的编码即可。

3、参考代码如下:

package csc.xls;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;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;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class ExcelRead {//读取excel文件public boolean xlsRead(String path) {StringBuffer strbuf=new StringBuffer();try{//获取excel文件String file=path+"all.xls";POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream(file));//得到Excel工作簿对象    HSSFWorkbook wb = new HSSFWorkbook(fs);  //得到Excel工作表对象    HSSFSheet st = wb.getSheetAt(0);System.out.println(st.getLastRowNum());for(int i=1;i<=st.getLastRowNum();i++){//去掉表头,遍历每一行HSSFRow row = st.getRow(i);         HSSFCell cellContent = row.getCell(0);//第1列,投诉内容String content=cellContent.getStringCellValue();//content=content.replaceAll("[\\t\\n\\r]", "");//将内容区域的回车换行去除 //删除excel中回车符,软回车Alt+Enter)和硬回车Enterfor(int j=10;j<14;j++){content = content.replaceAll(String.valueOf((char)j), "");}HSSFCell cellLabel = row.getCell(1);//第2列,越级标记String label=cellLabel.getStringCellValue();if(label.equals("否"))strbuf.append("0"+"|"+content+"\r\n");else strbuf.append("1"+"|"+content+"\r\n");}           wb.close();         fs.close();     }catch (Exception e) {System.out.println(e.getMessage());return false;} //写入文件try{File file=new File(path+"traindata.txt");if(!file.exists()) file.createNewFile();FileOutputStream out=new FileOutputStream(file,true); out.write(strbuf.toString().getBytes("utf-8"));out.close();}catch (IOException e){e.printStackTrace();}return true;}public static void main(String[] args) {String path="D:"+System.getProperty("file.separator")+"tmp"+System.getProperty("file.separator");ExcelRead er=new ExcelRead();er.xlsRead(path);}
}

Java-POI操作excel清除单元格分行字符相关推荐

  1. POI 操作Excel的单元格样式超过64000的异常问题解决

    文章目录 POI 操作Excel的单元格样式超过64000的异常问题解决 问题描述 问题原因 问题分析和解决 简单的Excel文件生成Demo 最终的解决方案 POI 操作Excel的单元格样式超过6 ...

  2. Java POI 对Excel合并单元格的数据处理

    Java POI 对Excel合并单元格的数据处理 最近在项目开发过程中,有个一个导入Excel文件处理合并单元格数据的需求,就自己在网上找了一个模板,自己进行二次开发来开发需求. Excel工具类 ...

  3. java合并单元格的快捷键_Java使用POI操作Excel合并单元格

    合并单元格的方法: 指定 4 个参数,起始行,结束行,起始列,结束列.然后这个区域将被合并. CellRangeAddress region = new CellRangeAddress(startR ...

  4. java POI导出excel,合并单元格边框消失

    业务是导出一个报表,要求有一个跨多列的表头,肯定要用到合并单元格,但合并后边框消失.网上的一些解决办法是重写合并单元格方法,但弄清楚原因后,其实没必要. 原来是这样的: 合并后就第一个有边框,其余全成 ...

  5. java excel里对角线,使用POI在excel文件单元格实现对角线

    [java POI操作Excel文件(合并单元格.插入图片.超链接)] 查看POI的API可以发现HSSFBorderFormatting.setBoderDiagonal接口,尝试使用这个接口并没有 ...

  6. Java - Poi 操作 Excel

    Java - Poi 操作 Excel 关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 注意 XSSFWorkbook 对象是操作 .xlsx 格式的表格 HS ...

  7. POI导出Excel设置单元格背景色

    POI导出Excel设置单元格背景色 导出Excel的时候,没有设置背景色,用2003版本的Excel工具打开会出现文档单元格背景自动填充黑色的情况,没有找到好的解决方法,就主动给他填充一种颜色,问题 ...

  8. JAVA POI拆分合并的单元格

    JAVA POI拆分合并的单元格 最近项目中需要做一个导入功能,但是EXCEL数据有合并单元格的情况出现,导入的数据需要直接入库,合并单元格的数据首行会有数据,但次行的值为空.见下图 需要获取C列和E ...

  9. POI导出——Excel实现单元格的背景色填充

    1.背景 随着业务需求的扩充,简简单单的Excel导出已经不能满足客户的胃口了.而POI api这个家伙里面的坑有时候真的是让你分分钟没有脾气,所以打算记录下来,分享一下poi的坑及其解决方法. 2. ...

最新文章

  1. iOS 快速存储到本地
  2. jstack分析cpu占用100%
  3. 怎么样从一个疯狂下载者成为一个学习者
  4. 避免使用FOR –反假战役
  5. 测试开发面试技巧_面试技巧将给您带来信心并帮助您获得开发工作
  6. jqgrid为什么表头和数据之间有间隙_面试官:你看过Redis数据结构底层实现吗?...
  7. servlet里面转发与重定向
  8. 打开浏览器不是主页_浏览器首页被篡改!教你几个快速解决的方法
  9. 实验2.2编写重载函数Max1
  10. 静态成员函数与静态数据的使用
  11. 2021 年 Windows 成了 Python 开发者的首选
  12. 评“CPQuery, 解决拼接SQL的新方法”
  13. Java web切面编程
  14. s3c2410多通道adc驱动及测试程序(使用write控制多通道)
  15. AI人工智能技术可以做什么
  16. MHL接口是一种废品接口
  17. 文通科技OCR识别|电子护照阅读器
  18. 网易云音乐 音乐外链
  19. python 获取当前时间(年月日时分秒)
  20. log4j2:占位符引起的内存泄漏bug

热门文章

  1. Linux下FTP服务器搭建
  2. Java设计模式(十二):状态设计模式
  3. java poi jar maven_导出maven项目依赖的jar包(图文教程)
  4. apache配置文件httpd.conf----小白福利
  5. 日志中的秘密 Windows登录类型都有哪些
  6. simple go web application 二维码生成 打包部署
  7. 代写SOFTENG 370 Operating Systems课设、代做C/C++ 留学生作业、代写c/c++代码、代写C/C++编程作业...
  8. springboot profiles
  9. 031 广播变量与累加器
  10. 回归Dos操作的快感,进入PowerShell世界 (转)