1. 程式人生 > >Java 去除excel表格內容中的空格

Java 去除excel表格內容中的空格

背景,在excel表格中的一個單元格中存在空格、換行符等,用excel的替換、SUBSTITUTE函式等功能無法正常去除,利用jxl方法將單元格中的內容讀取出來,進行處理後,在寫入excel中。

  • jxl jar包
  • 從excel中讀取資料
  • 資料處理
  • 資料寫入excel

1、從excel表格中讀取資料

程式碼塊


        int i=1;  
        Sheet sheet;  
        Workbook book;  
       Cell cell1,cell2;  
          try {   
                //in.xls為要讀取的excel檔名  
book= Workbook.getWorkbook(new File("E://in.xls")); //獲得第一個工作表物件(ecxel中sheet的編號從0開始,0,1,2,3,....) sheet=book.getSheet(0); //獲取左上角的單元格 String content[]=new String[2000];//存放第5列的資料 String content1[]=new String[2000];//存放第8列的資料
while(true){ try { //獲取每一行的單元格 cell1=sheet.getCell(4,i); //獲取第i行第5列單元格的內容 cell2=sheet.getCell(7,i);//獲取第i行第8列單元格的內容 String change_words= replaceBlank(cell1.getContents());//使用replaceBlank()方法去除第i行第5列單元格內容中的空格
String change_words1= replaceBlank(cell2.getContents());//使用replaceBlank()方法去除第i行第8列單元格內容中的空格 content[i]=change_words;//將處理後的資料放入陣列中 content1[i]=change_words1; if(i>=1999) {//如果第i行沒有資料,就中斷當前執行程式,退出 break; } } catch(Exception e) { e.printStackTrace(); } i++;//累加,行數加一 } //將處理後的資料寫入到E盤下的1資料夾下的hell0.xls檔案中 File file = new File("E://1//hello.xls"); //建立一個新的可寫工作簿 WritableWorkbook wb = Workbook.createWorkbook(file); //用TWrite中的write()方法將資料寫入到Excel表格中 TWrite.write(wb,content); // 寫入Exel工作表 wb.write(); // 關閉Excel工作薄物件 wb.close(); book.close(); } catch(Exception e) { }

2、資料處理

程式碼塊

        /*
         * 去除資料的空格、回車、換行符、製表符
         */
    public static String replaceBlank(String str) {
        String dest = "";
        if (str!=null) {
            //空格\t、回車\n、換行符\r、製表符\t
            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
            Matcher m = p.matcher(str);
            dest = m.replaceAll("");
        }
        return dest;
    } 

##3、資料寫入Excel
### 程式碼塊
public static void  write(WritableWorkbook wb,String str[]) throws WriteException {  
        WritableSheet wSheet = wb.createSheet("sheet1", 0);  
          for(int i=0;i<str.length;i++)
          {

            //新增Label物件   
              Label labelA = new Label(0, i, str[i]);   
              wSheet.addCell(labelA);

          }
          }

3、資料寫入Excel

程式碼塊

public static void  write(WritableWorkbook wb,String str[]) throws WriteException {  
        WritableSheet wSheet = wb.createSheet("sheet1", 0);  
          for(int i=0;i<str.length;i++){  
            //新增Label物件   
              Label labelA = new Label(0, i, str[i]);   
              wSheet.addCell(labelA);
          }
               }

處理前

這裡寫圖片描述

處理後

這裡寫圖片描述

後續優化:目前大批量也可執行,我試過每個excel表2000條資料,在幾秒中就可以執行完,但是會覆蓋excel之前的內容,後續準備修改方法,可以一次修改多行,還不會覆蓋之前的資料。

[原始碼]