Java 去除excel表格內容中的空格
阿新 • • 發佈:2019-01-03
背景,在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之前的內容,後續準備修改方法,可以一次修改多行,還不會覆蓋之前的資料。