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之前的内容,后续准备修改方法,可以一次修改多行,还不会覆盖之前的数据。

[源代码]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值