1. 程式人生 > >java解析壓縮檔案.zip,獲取資料夾下的資料

java解析壓縮檔案.zip,獲取資料夾下的資料


/**
 * 資料包Controller
 * @author cookie
 * @version 2017-08-23
 */

public class BudgetDateController extends BaseController {
    
  
    /**
     * 生成資料包
     * @param budgetDatabase
     * @param model
     * @param redirectAttributes
     * @return
     */
    @RequestMapping(value = "save")
    public String save(BudgetData budgetDatabase, Model model, RedirectAttributes redirectAttributes) throws FileNotFoundException {
        //定義目錄
        String fileName="資料包"+DateUtils.getDate("yyyyMMddHHmmss");
        File src=new File("d:\\users\\"+fileName);
        List<BudgetIncomeBill> billList=budgetIncomeBillService.findList(budgetIncomeBill);
        if(billList.size()>0){
            //迴圈建立7個execl
            for(int b=0;b<billList.size();b++){
                HSSFWorkbook wbb = new HSSFWorkbook();  
                //根據tablenum判斷是哪種型別的支出,生成對應的execl
                if(billList.get(b).getTableNum().equals("2")){
                    BudgetIncome budgetIncome=new BudgetIncome();
                    budgetIncome.setHalfYear(budgetDatabase.getHalfYear());
                    budgetIncome.setSqlMap(sqlMap);
                    budgetIncome.setBudgetIncomeBill(billList.get(b));
                    HSSFCellStyle style = wbb.createCellStyle();  
                    Font Font = wbb.createFont();    
                    Font.setFontName("仿宋_GB2312");   
                    Font.setFontHeightInPoints((short) 12);//字號   
                    style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式  
                    style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//上下居中
                    style.setFont(Font);
                    style.setWrapText(true);
                    //設定左對齊樣式
                    HSSFCellStyle leftstyle = wbb.createCellStyle();  
                    leftstyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
                    leftstyle.setFont(Font);
                    //設定右對齊樣式
                    HSSFCellStyle rightstyle = wbb.createCellStyle();  
                    rightstyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
                    rightstyle.setFont(Font);
                    HSSFDataFormat df = wbb.createDataFormat();
                    style.setDataFormat(df.getBuiltinFormat("#,##0.00"));//保留兩位小數點
                 // 第四步之樹形式,建立單元格,設定單元格樣式
                    HSSFCellStyle treeStyle = wbb.createCellStyle();  
                    //treeStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式  
                    treeStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//上下居中
                    treeStyle.setFont(Font);
                    treeStyle.setWrapText(true);
                    // 第五步,設定邊框樣式
                    HSSFCellStyle borderStyle = wbb.createCellStyle();  
                    //borderStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式  
                    borderStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//上下居中
                    borderStyle.setFont(Font);
                    borderStyle.setWrapText(true);
                    borderStyle.setBorderBottom(CellStyle.BORDER_THIN); // 下邊框  
                    borderStyle.setBorderLeft(CellStyle.BORDER_THIN);// 左邊框  
                    borderStyle.setBorderTop(CellStyle.BORDER_THIN);// 上邊框  
                    borderStyle.setBorderRight(CellStyle.BORDER_THIN);// 右邊框  
                    // 第六步,設定表頭樣式
                    HSSFCellStyle heardStyle = wbb.createCellStyle();  
                    heardStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式  
                    heardStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//上下居中
                    heardStyle.setWrapText(true);
                    Font FirstFont = wbb.createFont();    
                    FirstFont.setFontName("黑體");   
                    FirstFont.setFontHeightInPoints((short) 24);//字號   
                    FirstFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //加粗
                    // 第六步,設定邊框樣式
                    HSSFCellStyle centerStyle = wbb.createCellStyle();  
                    centerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式  
                    centerStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//上下居中
                    centerStyle.setFont(Font);
                    centerStyle.setWrapText(true);
                    centerStyle.setBorderBottom(CellStyle.BORDER_THIN); // 下邊框  
                    centerStyle.setBorderLeft(CellStyle.BORDER_THIN);// 左邊框  
                    centerStyle.setBorderTop(CellStyle.BORDER_THIN);// 上邊框  
                    centerStyle.setBorderRight(CellStyle.BORDER_THIN);// 右邊框
                    row1.setHeightInPoints(50);//設定列高
                    //String sumByOffice=budgetIncomeService.getSumByAccount();得到總數
                    //cell65.setCellValue(sumByOffice);  
                        List<BudgetIncome> list=budgetIncomeService.findBudget(budgetIncome);
                        List<BudgetIncome> BudgetList=new ArrayList<BudgetIncome>();
                        List<BudgetIncome> cellList=new ArrayList<BudgetIncome>();
                        for(BudgetIncome income:list){
                            income.setSqlMap(budgetIncome.getSqlMap());
                            income.setBudgetIncomeBill(budgetIncome.getBudgetIncomeBill());
                            BudgetList=budgetIncomeService.findBudgetsByParent(income);
                            for(BudgetIncome income2:BudgetList){
                                cellList.add(income2);
                            }
                        }
                        cellList=budgetIncomeService.jisuan(cellList);
                        for(int i=7;i<cellList.size()+7;i++){
                            HSSFRow rowi= sheet.createRow(i-1);  
                            if(i==7){
                                if(cellList.get(i-7).getStandardBudget()!=null){
                                    cell64.setCellValue(Double.parseDouble(cellList.get(i-7).getStandardBudget()));
                                    cell64.setCellStyle(borderStyle);
                                }else{
                                    cell64.setCellValue("");
                                    cell64.setCellStyle(borderStyle);
                                }
                                if(cellList.get(i-7).getApplication()!=null){
                                    cell65.setCellValue(Double.parseDouble(cellList.get(i-7).getApplication()));
                                    cell65.setCellStyle(borderStyle);
                                }else{
                                    cell65.setCellValue("");
                                    cell65.setCellStyle(borderStyle);
                                }
                                if(cellList.get(i-7).getAudit()!=null){
                                    cell66.setCellValue(Double.parseDouble(cellList.get(i-7).getAudit()));
                                    cell66.setCellStyle(borderStyle);
                                }else{
                                    cell66.setCellValue("");
                                    cell66.setCellStyle(borderStyle);
                                }
                                if(cellList.get(i-7).getCompareResults()!=null){
                                    cell67.setCellValue(Double.parseDouble(cellList.get(i-7).getCompareResults()));
                                    cell67.setCellStyle(borderStyle);
                                }else{
                                    cell67.setCellValue("");
                                    cell67.setCellStyle(borderStyle);
                                }
                            }
                            for(int j=1;j<9;j++){
                                HSSFCell cellij = rowi.createCell((short) j-1);
                                if(j==1){
                                    cellij.setCellValue(cellList.get(i-7).getAccount().getName());
                                    cellij.setCellStyle(borderStyle);
                                }
                                else if(j==2){
                                    cellij.setCellValue(cellList.get(i-7).getMeasuringUnit());
                                    cellij.setCellStyle(borderStyle);
                                }
                                else if(j==3){
                                    cellij.setCellValue(cellList.get(i-7).getBudgetSupply());
                                    cellij.setCellStyle(borderStyle);
                                }
                                else if(j==4){
                                    if(cellList.get(i-7).getStandardBudget()!=null){
                                        cellij.setCellValue(Double.parseDouble(cellList.get(i-7).getStandardBudget()));
                                        cellij.setCellStyle(borderStyle);
                                    }else{
                                        cellij.setCellValue("");
                                        cellij.setCellStyle(borderStyle);
                                    }
                                }
                                else if(j==5){
                                    if(cellList.get(i-7).getApplication()!=null){
                                        cellij.setCellValue(Double.parseDouble(cellList.get(i-7).getApplication()));
                                        cellij.setCellStyle(borderStyle);
                                    }
                                }
                                else if(j==6){
                                    if(cellList.get(i-7).getAudit()!=null){
                                        cellij.setCellValue(Double.parseDouble(cellList.get(i-7).getAudit()));
                                        cellij.setCellStyle(borderStyle);
                                    }
                                }
                                else if(j==7){
                                    if(cellList.get(i-7).getCompareResults()!=null){
                                        cellij.setCellValue(Double.parseDouble(cellList.get(i-7).getCompareResults()));
                                        cellij.setCellStyle(borderStyle);
                                    }
                                }
                                else if(j==8){
                                    cellij.setCellValue(cellList.get(i-7).getRemarks());
                                    cellij.setCellStyle(borderStyle);
                                }
                            }
                        }
                    
                }else if(billList.get(b).getTableNum().equals("3")){
                 
                                }
                            }
                    
                }
                //輸出Excel檔案  
                FileOutputStream output;
                try {
                    if (!src.exists()&& !src.isDirectory()) {
                        src.mkdir();
                    }
                    output = new FileOutputStream(src+"\\"+billList.get(b).getTableNum()+".xls");
                     wbb.write(output);  
                     output.flush();  
                } catch (IOException e) {
                    e.printStackTrace();
                }  
            }
             addMessage(redirectAttributes, "生成資料包成功");
             budgetDatabase.setNo("生成資料包");
             budgetDatabase.setFilename(budgetDatabase.getOffice().getId());
             budgetDatabase.setFileway(fileName);
             budgetDataService.save(budgetDatabase);
        }else{
             addMessage(redirectAttributes, "生成資料包失敗");
        }
        return "redirect:"+Global.getAdminPath()+"/data/budgetData/?repage";
    }
    
    /**
     * 恢復資料包
     * @param budgetDatabase
     * @param model
     * @param redirectAttributes
     * @return
     */
    @RequestMapping(value = "load")
    public String load(MultipartFile file,BudgetData budgetDatabase, RedirectAttributes redirectAttributes,HttpServletRequest request,HttpServletResponse response,Model model,HttpSession httpSession) {
        try {  
            String fileName=file.getOriginalFilename();
            String filePath=request.getSession().getServletContext().getRealPath("/")+"upload/"+file.getOriginalFilename();
            File uploadFile = new File(request.getSession().getServletContext().getRealPath("/")+"upload/");
            File savePth=new File(filePath.substring(0, filePath.lastIndexOf("."))+"/"+fileName.substring(0, fileName.lastIndexOf(".")) + File.separator);
            String nowPath=filePath.substring(0, filePath.lastIndexOf("."))+"/"+fileName.substring(0, fileName.lastIndexOf(".")) + File.separator;
            File files=new File(filePath);
            if (!uploadFile.exists()&& !uploadFile.isDirectory()) {
                uploadFile.mkdir();
            }
            if(!files.exists()) {
                file.transferTo(new File(filePath));
            }
            //解壓到伺服器資料夾
            ZipUtil.unZip(filePath);
            File[] tempList = savePth.listFiles();
              System.out.println("該目錄下物件個數:"+tempList.length);
              for (int i = 0; i < tempList.length; i++) {
                     BudgetOutgoBill bill=new BudgetOutgoBill();
                     bill.setOffice(budgetDatabase.getOffice());
                     bill.setSqlMap(sqlMap);
                     bill.setHalfYear(budgetDatabase.getHalfYear());
                     PoiExcelHelper helper;  
                     if(nowPath.indexOf(".xlsx")!=-1) {  
                         helper = new PoiExcel2k7Helper();  
                     }else {  
                         helper = new PoiExcel2k3Helper();  
                     }
                   if (tempList[i].isFile()) {
                       //System.out.println("文     件:"+tempList[i]);
                       //遍歷資料夾,獲取到所有的execl,迴圈匯入
                       //System.out.println( tempList[i].getName());
                       String type=tempList[i].getName();                    
                       }else{
                           System.out.println("false");
                       }
                   }
                   if (tempList[i].isDirectory()) {
                       System.out.println("資料夾:"+tempList[i]);
                   }
              }
                budgetDatabase.setNo("恢復資料包");
                budgetDatabase.setFilename(budgetDatabase.getOffice().getId());
                budgetDatabase.setFileway(fileName);
                budgetDataService.save(budgetDatabase);
            addMessage(redirectAttributes, "資料恢復成功");
        } catch (Exception e) {
            e.printStackTrace();
           
        }
        return true;
    }

}

相關推薦

java解析壓縮檔案.zip獲取資料資料

/**  * 資料包Controller  * @author cookie  * @version 2017-08-23  */ public class BudgetDateController extends BaseController {           

Java壓縮zip檔案工具類(支援zip資料多級目錄結構)

文章目錄 Java解壓縮zip檔案工具類(支援zip資料夾下多級目錄結構) 1. 前言 2. 正文 2.1 解壓縮後文件目錄結構展示 2.2 注意事項 2.3 異常

java把指定資料的所有檔案壓縮zip

<span style="font-size:18px;background-color:rgb(204,204,204);">package cn.gov.csrc.base.util; import java.io.BufferedInputStream

獲取指定目錄資料(包含檔案)並且拷貝到另一指定資料刪除指定目錄資料(包含檔案

    /**      * 複製整個資料夾內容      *       * @param oldPath      *  

java解析json檔案(省區)

[{"code":"11","name":"北京市"},{"code":"12","name":"天津市"},{"code":"13","name":"河北省"},{"code":"14","name":"山西省"},{"code":"15","name":"內蒙古自治區"},{"code":"21","na

用python批量獲取某路徑資料及子資料的指定型別檔案並按原資料結構批量儲存處理後的檔案

因為是把自己成功執行的整個程式碼按幾部分截取出來的,所以每一小節程式碼不一定能單獨執行,特此說明。 1.獲取某路徑資料夾及子資料夾下的指定pcm型別檔案的全部路徑 import os def eachfile(filepath):     pathdi

前端獲取後臺傳輸過來是資料 {張三:12} 解析為[object object]獲取其中內容

昨天遇到前端傳輸過來的資料為[{張三:12},{李四:23}],後臺用的是map格式,我在前端js中暫未找到直接呼叫物件內容的方法,故利用以下方法來獲取: $.each(data.data,function(i,v){ info += "<option value=" + v[O

上機考試系統 commons-fileupload 上傳與下載 && 壓縮zip 檔案 && 刪除資料所有內容

在 maven 中使用了 commons-fileupload,使用方法: (一)上傳 1-1.前端介面 <form action="" enctype="multipart/form-data" class="modifyall" method="post

Atitit 壓縮檔案zip總結 注意孔目錄 以及 遞迴目錄 /springbootUpload/src/springbootUploadPkg/ZipUtilCompressPart.java

Atitit 壓縮檔案zip總結   注意孔目錄 以及 遞迴目錄   /springbootUpload/src/springbootUploadPkg/ZipUtilCompressPart.java   File file 

java使用遞迴複製資料的所有子檔案

1.先判斷要複製的檔案是資料夾還是檔案,如果是檔案,就進行復制,如果是資料夾,就進行下一層的迴圈,運用遞迴的特性,將所有的檔案進行復制。 2.存在問題,相對來說,使用字元流來進行復制有缺陷,在複製的過程中,對於複製的圖片啊,ppt什麼的檔案會有損害,可能不能開

java獲取檔案MD5獲取字串MD5

 獲取md5值4個步驟: 1.建立MessageDigest物件md5。 2.使用md的update(byte[] buffer)方法將資料更新到md5物件中。 3.使用md5的digest()方法獲得摘要,該摘要是一個長度為16的陣列。 4.將該摘要陣列轉換為32位

javaSE (三十二)找出字串中重複的元素並寫入檔案、模擬正版軟體使用次數期限、獲取資料的全部java檔案

1、找出字串中重複的元素並寫入檔案: 問題:鍵入(或者從一個檔案中讀取)一個字串,找出字串中重複的元素並寫入檔案 思路: 鍵入字串 map儲存 寫入檔案 程式碼: package cn.njupt; /* * * 鍵入一串字元,計算每個字元出

java 遞迴列印資料所有的檔案

import java.io.File; public class FileDemo2 { public static void main(String[] args) { // File file=new File("d:\\test"); File file=new File("D:\

java獲取指定資料的所有檔案

public static void readfile(String filepath) throws FileNotFoundException, IOException { try { Fi

不解壓壓縮包直接解析內部檔案(zip)

ZipInputStream.getNextEntry()____________獲取壓縮檔案內下一個檔案,如果當前位置是資料夾則從資料夾內獲取 ZipFile.getInputStream(ZipEntry) __________獲取壓縮包內部檔案的輸入流 示例: Workbook wb =

最新Zip壓縮檔案漏洞黑客可以觸發目錄遍歷攻擊

  近日,國內某安全公司研究人員透露了一個關鍵漏洞的詳細資訊,該漏洞影響了許多生態系統中的數千個專案,黑客可以利用這些漏洞在目標系統上實現程式碼執行。  黑客是如何通過Zip壓縮檔案入侵攻擊?被稱為“ZipSlip”的問題是一個任意的檔案覆蓋漏洞,在從檔案檔案中提取檔案時觸發

Android獲取assets資料的json資料並Gson解析!

Json 資料如下{ "code": 200, "msg": "ok", "news": [ { "title": "空降美國的孩子", "content": "在壓力和青春期的情緒波動

獲取資料檔案列表並匯出為txt檔案

#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "wxf" # Email: [email protected] #

Java 列出資料所有檔案符合條件的檔案複製到指定目錄

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class TestFile { public static void main(String[] a

java HTTP get post請求獲取二進位制檔案實現

public class HttpPlugin{ private static Log log = LogFactory.getLog(HttpPlugin.class); @Override public void init() {   }   public void se