Java-POI操作excel清除单元格分行字符
生活随笔
收集整理的这篇文章主要介绍了
Java-POI操作excel清除单元格分行字符
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
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清除单元格分行字符的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 离线轻量级大数据平台Spark之Java
- 下一篇: 机器学习知识点(四)最小二乘法Java实