Java修改excel內容


java 通過poi修改excel數據的實例網上一大把,但是用的時候卻可能遇到問題,我把我經過測試,成功的代碼分享給大家,也給自己做一個記錄,留着以后用。

本實例是操作excel2010的程序

代碼如下:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  
/**
 * 將aaa文件中的所有Study Subject ID開頭的換成 “研究主題”,Protocol ID開頭的換成“協議”。這個可以自己修改,根據需求不同靈活變化
 * @author sun
 *
 */
  
    public class WriteExcelPOI {
    
        public void writeExcelPOI() {
            try {

                String fileName = "D:\\aaa.xlsx";  //修改d盤的aaa.xlsx文件
                XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(fileName));
                Map<String, String> fields = new HashMap<String, String>();
                fields = getFieldMap();  //獲取要修改字段的集合
                String fillStr="";    //存儲aaa文件里的數據
                String[] fillSplit=null; 
                XSSFSheet xSheet = xwb.getSheetAt(0);  //獲取excel表的第一個sheet
                for (int i = 0; i <= xSheet.getLastRowNum(); i++) {  //遍歷所有的行
                    if(xSheet.getRow(i)==null){ //這行為空執行下次循環
                        continue;
                    }
                    
                    for (int j = 0; j <=  xSheet.getRow(i).getPhysicalNumberOfCells(); j++) {  //遍歷當前行的所有列
                        if(xSheet.getRow(i).getCell(j)==null){//為空執行下次循環
//                            System.out.println("qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq");
                            continue;
                        }
                        fillStr = (xSheet.getRow(i)).getCell(j).toString();//獲取當前單元格的數據
                        fillSplit=fillStr.split("_");//切割,本人的數據是以"_"為分隔符的這個可以根據自己情況改變
//                        XSSFRow xRow = xSheet.createRow(i);
//                        XSSFCell xCell = xRow.createCell(j);
                        XSSFCell xCell=xSheet.getRow(i).getCell(j); //獲取單元格對象,這塊不能向上邊那兩句代碼那么寫,不能用createXXX,用的話會只把第一列的數據改掉
                        xCell.setCellValue(fields.get(fillSplit[0].trim())==null?fillStr:fields.get(fillSplit[0].trim()));//修改數據,看數據是否和字段集合中的數據匹配,不匹配使用元數據
//                        System.out.println(fields.get(fillSplit[0].trim()));
                    }
                }

                FileOutputStream out = new FileOutputStream(fileName);
                xwb.write(out);
                out.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        private String getValue(XSSFCell xCell) {
            if (xCell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {

                return String.valueOf(xCell.getBooleanCellValue());
            } else if (xCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {

                return String.valueOf(xCell.getNumericCellValue());
            } else {

                return String.valueOf(xCell.getStringCellValue());
            }

        }

        private Map<String, String> getFieldMap(){
            Map<String, String> fields = new HashMap<String, String>();
            fields.put("Study Subject ID", "研究主題");
            fields.put("Protocol ID", "協議");
//            try{
//            String fileName = "D:\\yuan.xlsx";
//            XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(fileName));
//        
//            XSSFSheet xSheet = xwb.getSheetAt(3);
//            for (int i = 0; i <= xSheet.getLastRowNum(); i++) {
//                fields.put(xSheet.getRow(i).getCell(0).toString(),xSheet.getRow(i).getCell(1).toString());
////                System.out.println("---"+xSheet.getRow(i).getCell(0)+"*---"+fields.get("A1"));
//                }
//            }
//            catch(Exception e){
//                e.printStackTrace();
//            }
            return fields;
        }
         public static void main(String[] args) {
            WriteExcelPOI a = new WriteExcelPOI();
            
            a.writeExcelPOI();
        }
    }

 

使用的jar包在: http://download.csdn.net/detail/gaizhongfeng/8535377

有什么問題歡迎指出,也可以加我的qq: 212966054

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM