Java-POI操作excel清除单元格分行字符
生活随笔
收集整理的這篇文章主要介紹了
Java-POI操作excel清除单元格分行字符
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、需求背景:
? ? ? 有時需將一份大的excel文件導入到hdfs文件,用POI組件來導入excel文件并輸出成txt文本,此時一些單元格中帶有分行字符的就給輸出帶來麻煩,一般MR是按照行來處理,所以需要將單元格內(nèi)的文本清除掉分行字符,變成一行;
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列,投訴內(nèi)容String content=cellContent.getStringCellValue();//content=content.replaceAll("[\\t\\n\\r]", "");//將內(nèi)容區(qū)域的回車換行去除 //刪除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);} }總結(jié)
以上是生活随笔為你收集整理的Java-POI操作excel清除单元格分行字符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离线轻量级大数据平台Spark之Java
- 下一篇: 机器学习笔记(三)线性模型