Browse Source

处理服务端ftp获取数据为空问题

longht 4 years ago
parent
commit
138fa21498

+ 4 - 4
src/private/nc/impl/pubdev/pubtool/execmethod/FtpsUtil.java

@@ -16,7 +16,7 @@ import org.apache.commons.net.ftp.FTPFile;
 import org.apache.commons.net.ftp.FTPSClient;
 
 import nc.pub.Proptool.PropertiesUtil;
-import nc.pub.toos.FileTool.ExcelUtil;
+import nc.pub.toos.FileTool.ExcelUtil4Server;
 import nc.vo.pubapp.pattern.exception.ExceptionUtils;
 import nc.vo.pubapp.pattern.pub.PubAppTool;
 import nccloud.commons.collections.CollectionUtils;
@@ -174,12 +174,12 @@ public class FtpsUtil {
 				return null;
 			if (ftpfile.endsWith("xlsx")) {
 				// 处理ecxel2007
-				datas = new ExcelUtil().readExcel2007(ins);
+				datas = new ExcelUtil4Server().readExcel2007(ins);
 			} else if (ftpfile.endsWith("xls")) {
 				// 处理ecxel2003
-				datas = new ExcelUtil().readExcel2003(ins);
+				datas = new ExcelUtil4Server().readExcel2003(ins);
 			} else if (ftpfile.endsWith("csv")) {
-				datas = new ExcelUtil().readCsv(ins);
+				datas = new ExcelUtil4Server().readCsv(ins);
 			} else {
 				ExceptionUtils.wrappBusinessException("导入失败,系统只接收xls,xlsx,csv类型文件");
 				return null;

+ 348 - 0
src/private/nc/pub/toos/FileTool/ExcelUtil4Server.java

@@ -0,0 +1,348 @@
+package nc.pub.toos.FileTool;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+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.ss.usermodel.CellType;
+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;
+
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+
+  
+public class ExcelUtil4Server {
+	//默认单元格内容为数字时格式  
+    private static DecimalFormat df = new DecimalFormat("0");  
+    // 默认单元格格式化日期字符串   
+    private static SimpleDateFormat sdf = new SimpleDateFormat(  "yyyy-MM-dd HH:mm:ss");   
+    // 格式化数字  
+    private static DecimalFormat nf = new DecimalFormat("0.00");    
+    public static ArrayList<ArrayList<Object>> readFile(File file){  
+        if(file == null){  
+            return null;  
+        }  
+        String filename = file.getName().toLowerCase();
+        
+        if(filename.endsWith("xlsx")){  
+            //处理ecxel2007  
+        	
+            try {
+				return readExcel2007(new FileInputStream(file));
+			} catch (FileNotFoundException e) {
+				// TODO Auto-generated catch block
+				return null;
+			}  
+        }else if(filename.endsWith("xls")){  
+            //处理ecxel2003  
+            try {
+				return readExcel2003(new FileInputStream(file));
+			} catch (FileNotFoundException e) {
+				// TODO Auto-generated catch block
+				return null;
+			}  
+        }else if(filename.endsWith("csv"))  {
+        	try {
+				return readCsv(new FileInputStream(file));
+			} catch (FileNotFoundException e) {
+				// TODO Auto-generated catch block
+				return null;
+			}
+        }else {
+        	ExceptionUtils.wrappBusinessException("导入失败,系统只接收xls,xlsx,csv类型文件");
+        	return null;
+        }
+    }  
+    /*  
+     * @return 将返回结果存储在ArrayList内,存储结构与二位数组类似  
+     * lists.get(0).get(0)表示过去Excel中0行0列单元格  
+     */  
+    public static ArrayList<ArrayList<Object>> readExcel2003(InputStream input){  
+        try{  
+            ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();  
+            ArrayList<Object> colList;  
+            HSSFWorkbook wb = new HSSFWorkbook(input);  
+            HSSFSheet sheet = wb.getSheetAt(0);  
+            HSSFRow row;  
+            HSSFCell cell;  
+            Object value;  
+            for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){  
+                row = sheet.getRow(i);  
+                colList = new ArrayList<Object>();  
+                if(row == null){  
+                    //当读取行为空时  
+                    if(i != sheet.getPhysicalNumberOfRows()){//判断是否是最后一行  
+                        rowList.add(colList);  
+                    }  
+                    continue;  
+                }else{  
+                    rowCount++;  
+                }  
+                for( int j = row.getFirstCellNum() ; j <= row.getLastCellNum() ;j++){  
+                    cell = row.getCell(j);  
+                    if(cell == null || cell.getCellType() == CellType.BLANK){  
+                        //当该单元格为空  
+                        if(j != row.getLastCellNum()){//判断是否是该行中最后一个单元格  
+                            colList.add("");  
+                        }  
+                        continue;  
+                    }  
+                    switch(cell.getCellType()){  
+                     case STRING:    
+                            value = cell.getStringCellValue();    
+                            break;    
+                        case NUMERIC:    
+                            value = cell.getNumericCellValue();    
+                            break;    
+                        case BOOLEAN:    
+                            value = Boolean.valueOf(cell.getBooleanCellValue());  
+                            break;    
+                        case BLANK:    
+                            value = "";    
+                            break;    
+                        default:    
+                            value = cell.toString();    
+                    }// end switch  
+                    colList.add(value);  
+                }//end for j  
+                rowList.add(colList);  
+            }//end for i  
+              
+            return rowList;  
+        }catch(Exception e){  
+            return null;  
+        }  
+    }  
+      
+    public static ArrayList<ArrayList<Object>> readExcel2007(InputStream input){  
+        try{  
+            ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();  
+            ArrayList<Object> colList;  
+            XSSFWorkbook wb = new XSSFWorkbook(input);  
+            XSSFSheet sheet = wb.getSheetAt(0);  
+            XSSFRow row;  
+            XSSFCell cell;  
+            Object value;  
+            for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){  
+                row = sheet.getRow(i);  
+                colList = new ArrayList<Object>();  
+                if(row == null){  
+                    //当读取行为空时  
+                    if(i != sheet.getPhysicalNumberOfRows()){//判断是否是最后一行  
+                        rowList.add(colList);  
+                    }  
+                    continue;  
+                }else{  
+                    rowCount++;  
+                }  
+                for( int j = row.getFirstCellNum() ; j <= row.getLastCellNum() ;j++){  
+                    cell = row.getCell(j);  
+                    if(cell == null || cell.getCellType() == CellType.BLANK){  
+                        //当该单元格为空  
+                        if(j != row.getLastCellNum()){//判断是否是该行中最后一个单元格  
+                            colList.add("");  
+                        }  
+                        continue;  
+                    }  
+                    switch(cell.getCellType()){  
+                     case STRING:    
+                            value = cell.getStringCellValue();    
+                            break;    
+                        case NUMERIC:    
+                        	value = cell.getNumericCellValue();      
+                            break;    
+                        case BOOLEAN:    
+                            value = Boolean.valueOf(cell.getBooleanCellValue());  
+                            break;    
+                        case BLANK:    
+                            value = "";    
+                            break;    
+                        default:    
+                            value = cell.toString();    
+                    }// end switch  
+                   
+                    colList.add(cell.toString());  
+                }//end for j  
+                rowList.add(colList);  
+            }//end for i  
+              
+            return rowList;  
+        }catch(Exception e){  
+            System.out.println("exception");  
+            return null;  
+        }  
+    }  
+      
+    public static void writeExcel(ArrayList<ArrayList<Object>> result,String path){  
+        if(result == null){  
+            return;  
+        }  
+        HSSFWorkbook wb = new HSSFWorkbook();  
+        HSSFSheet sheet = wb.createSheet("sheet1");  
+        for(int i = 0 ;i < result.size() ; i++){  
+             HSSFRow row = sheet.createRow(i);  
+            if(result.get(i) != null){  
+                for(int j = 0; j < result.get(i).size() ; j ++){  
+                    HSSFCell cell = row.createCell(j);  
+                    cell.setCellValue(result.get(i).get(j).toString());  
+                }  
+            }  
+        }  
+        ByteArrayOutputStream os = new ByteArrayOutputStream();  
+        try  
+        {  
+            wb.write(os);  
+        } catch (IOException e){  
+            e.printStackTrace();  
+        }  
+        byte[] content = os.toByteArray();  
+        File file = new File(path);//Excel文件生成后存储的位置。  
+        OutputStream fos  = null;  
+        try  
+        {  
+            fos = new FileOutputStream(file);  
+            fos.write(content);  
+            os.close();  
+            fos.close();  
+        }catch (Exception e){  
+            e.printStackTrace();  
+        }             
+    }  
+    
+    
+    
+   
+        
+        /**
+         * 导出
+         * 
+         * @param file csv文件(路径+文件名),csv文件不存在会自动创建
+         * @param dataList 数据
+         * @return
+         */
+        public static boolean exportCsv(File file, List<String> dataList){
+            boolean isSucess=false;
+            
+            FileOutputStream out=null;
+            OutputStreamWriter osw=null;
+            BufferedWriter bw=null;
+            try {
+                out = new FileOutputStream(file);
+                osw = new OutputStreamWriter(out);
+                bw =new BufferedWriter(osw);
+                if(dataList!=null && !dataList.isEmpty()){
+                    for(String data : dataList){
+                        bw.append(data).append("\r");
+                    }
+                }
+                isSucess=true;
+            } catch (Exception e) {
+                isSucess=false;
+            }finally{
+                if(bw!=null){
+                    try {
+                        bw.close();
+                        bw=null;
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    } 
+                }
+                if(osw!=null){
+                    try {
+                        osw.close();
+                        osw=null;
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    } 
+                }
+                if(out!=null){
+                    try {
+                        out.close();
+                        out=null;
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    } 
+                }
+            }
+            
+            return isSucess;
+        }
+        
+        /**
+         * 导入
+         * 
+         * @param input csv文件(路径+文件)
+         * @return
+         */
+        public static ArrayList<ArrayList<Object>> readCsv(InputStream input){
+        	
+        	 ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();  
+            BufferedReader br=null;
+            try { 
+                br = new BufferedReader(new InputStreamReader(input,"GBK"));
+                String line = ""; 
+                ArrayList<Object> colList;  
+                while ((line = br.readLine()) != null) { 
+                	colList = new ArrayList<Object>();
+                	String[] datas = line.split(",");
+                	for (String data : datas) {
+                		colList.add(data);
+					}
+                	rowList.add(colList);
+                }
+            }catch (Exception e) {
+            }finally{
+                if(br!=null){
+                    try {
+                        br.close();
+                        br=null;
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+     
+            return rowList;
+        }
+    
+    
+      
+    public static DecimalFormat getDf() {  
+        return df;  
+    }  
+    public static void setDf(DecimalFormat df) {  
+    	ExcelUtil4Server.df = df;  
+    }  
+    public static SimpleDateFormat getSdf() {  
+    	return sdf;  
+    }  
+    public static void setSdf(SimpleDateFormat sdf) {  
+    	ExcelUtil4Server.sdf = sdf;  
+    }  
+    public static DecimalFormat getNf() {  
+        return nf;  
+    }  
+    public static void setNf(DecimalFormat nf) {  
+    	ExcelUtil4Server.nf = nf;  
+    }  
+      
+}