`

一个简单的解压ZIP Excl文件--->按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。

阅读更多
写道
一个简单的解压ZIP Excl文件--->按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。
package common.gaoyang;

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.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

/**
 * 文件的读写
 *
 * @author liming
 *
 */
public class CardZipFileOperating {
    private static final Logger logger = LoggerFactory.getLogger(CardZipFileOperating.class);
//    // 解压到的目标文件
//    public static String directory = "E:\\demo\\";
//    // 解压文件
//    public static String stringg = "F:\\缴费网\\DL20111213003195.zip";

    /**
     * 解压,处理下载的zip工具包文件
     *
     * @param directory
     *            要解压到的目录
     * @param string
     *            工具包文件
     * @throws IOException
     * @throws Exception
     *             操作失败时抛出异常
     */
    public static int unzipFile(String directory,String stringg) throws IOException{
        ZipInputStream zis=null;
        int f=0;
        try {
            zis = new ZipInputStream(new FileInputStream(stringg));
        } catch (Exception e) {
            f++;
            System.out.println("解压ZIP文件失败!");
            System.out.println("没有找到"+stringg+"目录下文件,检查下是不是文件的路径格式写的不对,如:D盘下的DL202111213003195.zip文件格式写成:D:\\"+"\\DL202111213003195.zip");
        }
     if(zis!=null){
        ZipEntry ze = null;
        try {
            ze = zis.getNextEntry();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            f++;
            e.printStackTrace();
        }
        File parent = new File(directory);
        if (!parent.exists() && !parent.mkdirs()) {
            System.out.println("创建给文件解压到那个 \"" + directory+ "\"目录 失败");
              System.out.println("检查下解压的目录是否格式写错:例如给文件解压到E盘下的 demo文件夹下,路径应该写成:E:\\"+"\\demo\\"+"\\");
              f++;
        }else{
            while (ze != null) {
                String name = ze.getName();
                File child = new File(parent, name);
                FileOutputStream output = new FileOutputStream(child);
                byte[] buffer = new byte[10240];
                int bytesRead = 0;
                while ((bytesRead = zis.read(buffer)) > 0) {
                    output.write(buffer, 0, bytesRead);
                }
                output.flush();
                output.close();
                ze = zis.getNextEntry();
            }
        }
        zis.close();
     }
     return f;
           
    }

    // 函数GetTestXlsFileName功能:遍历fileAbsolutePath目录下的所有指定扩展名文件
    // 并将文件名保存在Vector中
    @SuppressWarnings("unchecked")
    public static List getTestXlsFileName(String fileAbsolutePath) {
        List list = new ArrayList();
        File file = new File(fileAbsolutePath);
        File[] subFile = file.listFiles();
        if(subFile!=null){
        for (int iFileLength = 0; iFileLength < subFile.length; iFileLength++) {
            // 判断是否为文件夹
            if (!subFile[iFileLength].isDirectory()) {
                String tempName = subFile[iFileLength].getName();
                // 判断是否为xls或xlsx结尾
                if (tempName.trim().toLowerCase().endsWith(".xls")
                        || tempName.trim().toLowerCase().endsWith(".xlsx")) {
                    // 去掉tXXXX.xls文件的首字母t
                    // String fileName = tempName.substring(1);
                    list.add(tempName);
                }
            }
        }
       
        }
        return list;
    }

    public static int OperatingExcl(String objectPath,String directory)
            throws Exception {
         int flag=0;
        String pathoperratingExcl = directory + objectPath;
        // 定义一个文件类
        InputStream is = null;
        // 定义一个工作book
        Workbook workBook = null;
        is = new FileInputStream(pathoperratingExcl);
        // 获取值
        workBook = Workbook.getWorkbook(is);
        // 获取哪一页sheet
        Sheet sheet = workBook.getSheet(0);
        @SuppressWarnings("unused")
        Cell cell = null;
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://xx.xx.xx.xx:3306/realpay?useUnicode=true&characterEncoding=UTF-8";
        String user = "xx";
        String password = "xx";
        Class.forName(driver);
        Connection conn = DriverManager.getConnection(url, user, password);
        Statement statement = conn.createStatement();
        for (int j = 1; j < sheet.getRows(); j++) {
           if(!sheet.getCell(1, j).getContents().equals("")){
            String order_no=null;
            String sp_order_no=null;
            String order_status=null;
            String shengfen=null;
            String yunyingshang=null;
            String amount=null;
            String order_date=null;
            String liushui=null;
            String phone=null;
            String danjia=null;
            String shifu=null;
            String daozhang=null;
            String tuikuan=null;
            String create_date=null;
            String update_date=null;
            String this_status=null;
                order_no=sheet.getCell(2, j).getContents();
                sp_order_no=sheet.getCell(3, j).getContents();
                String order_status1=sheet.getCell(15, j).getContents();
                if(order_status1.equals("失败")){
                    order_status="0";
                }else if(order_status1.equals("成功")){
                    order_status="1";
                }else if(order_status1.equals(" ")){
                    order_status="2";
                }else if(order_status1.equals("未付款")){
                    order_status="3";
                }else if(order_status1.equals("部分退款")){
                    order_status="4";
                }else{
                    order_status="2";
                }
                shengfen=sheet.getCell(6, j).getContents();
                yunyingshang=sheet.getCell(7, j).getContents();
                amount=sheet.getCell(9, j).getContents();
                String ddd=sheet.getCell(1, j).getContents();
                int index = ddd.indexOf(".");
                String dddd=ddd.substring(0,index);
                order_date=dddd;
                liushui=sheet.getCell(4, j).getContents();
                phone=sheet.getCell(10, j).getContents();
                danjia=sheet.getCell(11, j).getContents();
                shifu=sheet.getCell(12, j).getContents();
                daozhang=sheet.getCell(13, j).getContents();
                tuikuan=sheet.getCell(14, j).getContents();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                create_date=sdf.format(new Date());
                update_date="0000-00-00 00:00:00";
                this_status="1";
                String sql = "INSERT INTO gaoyang_checking(order_no,sp_order_no,order_status,shengfen,yunyingshang,amount,order_date,liushui,phone,danjia,shifu,daozhang,tuikuan,create_date,update_date,this_status)" +
                "VALUES" +
                "('"+order_no+"','"+sp_order_no+"','"+order_status+"','"+shengfen+"','"+yunyingshang+"'," +
                 "'"+amount+"','"+order_date+"','"+liushui+"','"+phone+"','"+danjia+"'" +
                 ",'"+shifu+"','"+daozhang+"','"+tuikuan+"','"+create_date+"','"+update_date+"','"+this_status+"')";
                int  rs = statement.executeUpdate(sql);
                if(rs>0){
                    //System.out.println("添加成功》》》》"+j);
                    flag++;
                }else{
                    System.out.println("添加失败》》》》");
                    System.out.println("失败的sql"+sql);
                }
           }
        }
        conn.close(); 
        conn.close();
        workBook.close();
        return flag;
    }
    public static int DelOperatingExcl(String objectPath){
        int id=0;
        try {
            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://1xx.1xx8.1.2xx2:3306/realpay?useUnicode=true&characterEncoding=UTF-8";
            String user = "xx";
            String password = "xx";
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(url, user, password);
            Statement statement = conn.createStatement();
            String sql = "DELETE  FROM gaoyang_checking  WHERE order_date LIKE '%"+objectPath+"%'";
            System.out.println(sql);
            id = statement.executeUpdate(sql);
           
            conn.close(); 
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return id;
    }
    /**
     * 读取excl文件并给存入到Map中去
     *
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    public static void readExcl(String adatete,String directory,String stringg) throws Exception {
        int j=0;
        //解压到的文件   解压文件
        int zipa=unzipFile(directory,stringg);
     if(zipa<1){
        //String y=adatete.split("-")[1].split("-")[0];
//        String m=adatete.split("-")[0];
//        String d=adatete.split("-")[2];
        String f1=adatete.substring(0,4);
        String f2=adatete.substring(4,6);
        String f3=adatete.substring(6,8);
        String zTime=f1+"-"+f2+"-"+f3;
        List list = getTestXlsFileName(directory);
        String pas="DL20111213003195_"+adatete+".xls";
        for (int i = 0; i < list.size(); i++) {
            //System.out.println(list.get(i));
            if(pas.equals(list.get(i))){
                int shan=DelOperatingExcl(zTime);
                    if(shan>0){
                        System.out.println("数据库有"+adatete+"记录,已经删除!");
                    }else{
                        System.out.println("数据库未有"+adatete+"记录!");
                }
               
                //路径   要添加的路径
                int chenggong=OperatingExcl(pas,directory);
                System.out.println("添加已经结束,添加了:"+chenggong+"条!");
            }else{
                j++;
            }
            if(j==list.size()){
                System.out.println("没有找到"+adatete+"日期相对应的excel文件文件");
                System.out.println("1、当天没有文件,2、检查下日期是否写错,例如2012年2月9号的必须写成:20120209");
            }
        }
         
     }
    }
    public static void main(String[] args) {
        try {
            int dd=args.length;
            if(dd==3){
                System.out.println(dd);
                String adatete = args[0];
                String directory = args[1];
                String stringg = args[2];
                if(adatete.equals("") || adatete==null){
                    System.out.println("请按顺序输入3个参数,1 日期、2解压到的目录 、3需要解压的文件目录");
                }else if(directory.equals("") || directory==null){
                    System.out.println("请按顺序输入3个参数,1 日期、2解压到的目录 、3需要解压的文件目录");
                }else if(directory.equals("")  || directory==null){
                    System.out.println("请按顺序输入3个参数,1 日期、2解压到的目录 、3需要解压的文件目录");
                }else{
                    readExcl(adatete,directory,stringg);
                }
            }else{
                System.out.println("请按顺序输入3个参数,1 日期、2解压到的目录 、3需要解压的文件目录");
            }
           
//            String m=adatete.split("-")[0];
//            String d=adatete.split("-")[2];
       
        //readExcl("20120229","E:\\demo\\","F:\\缴费网\\DL20111213003195.zip");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

在eclipse下安装fat jar插件进行给项目打成jar包:

安装:

 

 

问题:有两个项目,他们都是两个引用包(没main入口)。像这样

  这两个项目,kernel是最底层的引用包,而androidConnection也是一个引用了kernel包的引用包,现在我想打包androidConnection,但是用普通的import成jar是不包括kernel的jar的。

因此搜索了一下,网上大概有几个不错的方法,这里我打算用fatjar,因为它作为eclipse的插件,用起来够傻瓜式的,很方便。^-^

//////////////////////////下面是截取网上的教材////////////////////
       查看Eclipse如何打包的过程中我发现有个fatjar插件功能更强些,可以把需要的资源打进一个jar里。所以下载了一个,下载地址:http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924  解 压缩后是一个.../plugins/(net...)把plugins下面的(net..)文件夹拷贝到eclipse的plugins下,重新启动 Eclipse3.1,Windows=>prefernce=>fat jar preference看到他就说明已经安装成功了。如果没有看到,没有关系,删除D:\eclipse310\configuration \org.eclipse.update\platform.xml文件(此文件可以自动生成)不用担心以前的插件会因此而消失,没事。

        刚开始找不到如何使用它,后来看到你的项目=〉Export..=>向导里有fat jar =>使用起来真的很方便。

 

(上面图片的红色框主要是填你的入口函数,当然引用包是没有的,因此你可以直接跳过什么都不用填,生成出来的jar包它会自动将你所引用到的其他jar包也包括进来)
总结:
一般把src打包export=>Jar File 即可。
想把src附属的资源一起打包,必须使用FatJar => export..=>FatJar.

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

最后在运行Jar包:cmd:  java -jar   F:\Myeclipsworkspace\javaExcleDemo\javaExcleDemo_fat.jar    E:\\demo\\    F:\\缴费网\\DL20111213003195.zip 

 

 

 

 

最后运行结果:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 54.3 KB
分享到:
评论

相关推荐

    web 读取excle文件需要的poi jar包

    2. 创建`Workbook`对象,它是Excel文件的工作簿,可以对应到一个Excel文件。根据文件格式,可以选择`HSSFWorkbook`(.xls)或`XSSFWorkbook`(.xlsx)。 3. 使用`Workbook`对象打开Excel文件,通过`WorkbookFactory....

    mvc 上传excel文件并读取excle内容

    asp.net mvc 上传excel文件并读取excle内容转成...思路:上传一个excel文件,读取该excel文件中数据,转成DataTable(或List),循环insert到数据库中去 https://blog.csdn.net/djk8888/article/details/80826430

    多个excel导出压缩成zip 文件 数据量大导出

    - 这段代码首先将数据分割成多个Excel文件,然后创建一个新的zip文件,将所有的Excel文件添加到zip中。 5. **性能优化**: - 并行处理:如果系统资源允许,可以使用多线程或多进程同时处理多个Excel文件的导出和...

    文件上传Excel解析相关的jar

    总的来说,"文件上传Excel解析相关的jar"是一个辅助开发者在SpringMVC环境中实现文件上传、Excel解析和下载功能的重要资源。通过结合相关的文章学习和使用这些库,可以有效地提高数据处理的效率和灵活性。在实际应用...

    AutoLISP例程:读取excel文件.doc

    在本例中,我们将使用 AutoLISP 读取 Excel 文件的内容,并将其返回为一个 Lisp 列表。首先,我们需要加载 COM 组件,使用 vl-load-com 函数加载 COM 组件。然后,我们使用 vlax-get-or-create-object 函数创建一个 ...

    matlab将多个excel读取并存到一个excel的不同sheet中.zip

    在MATLAB中,将多个Excel文件读取并合并到一个Excel文件的不同工作表(Sheet)中,是一项常见的数据处理任务。这项操作可以帮助我们有效地管理和整合大量分散的数据。下面,我们将详细探讨如何使用MATLAB实现这一...

    Mac/IOS 读取excel文件

    总之,DHlibxls为Mac和iOS开发者提供了一个简单易用的接口来读取.xls文件。虽然它不支持.xlsx格式,但在许多情况下,对于处理旧版Excel文件已经足够。正确理解和使用这个库,可以帮助你在应用中无缝地集成Excel数据...

    java读取excl文件内容进行mysql自动创建表

    例如,可以创建一个方法,接收Excel文件路径作为参数,然后使用`WorkbookFactory.create()`方法来打开文件。接着,遍历工作簿中的每个工作表,再遍历每个工作表的每一行和每一列,获取单元格的值。 获取到Excel数据...

    java读取excel之xlsl超大文件

    具体来说,我们可以创建一个SXSSFWorkbook实例,设置适当的内存阈值,例如每100行或特定大小的数据后写入硬盘,然后逐行读取和处理数据,而不是一次性加载所有数据。 以下是实现这一功能的步骤: 1. 引入Apache ...

    C#读取加密Excel文件

    C# 读取加密的Excel 文件... 开始研究NPOI读取加密的Excel文件,没有研究出来,后来才改用Microsoft.Office.Interop.Excel读取加密的Excle文件。若有那位大牛研究出NPOI读取加密的Excel文件,希望能共享出源码来。 谢谢

    java读取excel及导出excel文件

    对于读取Excel文件,以下是一个基本的步骤: 1. 引入Apache POI库:在你的项目构建路径中添加poi、poi-ooxml、poi-ooxml-schemas等必要的依赖库。 2. 创建Workbook对象:使用`org.apache.poi.ss.usermodel....

    excle导出jar包

    综上所述,这个“excle导出jar包”是一个Java库或工具,能够读取和处理Excel 2003(.xls)和2007(.xlsx)格式的数据,并将其功能打包成一个可执行的JAR文件。它可能包含了一些自定义的API或方法,简化了在Java应用...

    易语言读取excel文件到高级表格

    Excel文件通常用于存储和处理结构化的表格数据,而“读取Excel文件到高级表格”则是将Excel中的数据导入到易语言的高级表格组件中,便于进一步的处理和显示。 首先,我们需要理解易语言中的高级表格组件。这是一个...

    解析Excel格式数据的poi的jar包

    Apache POI是一个开源库,专门用于读取和写入Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。在这个场景中,我们将深入探讨如何使用Apache POI的jar包来解析Excel格式的数据。 首先,Apache POI提供了两个...

    读取Excle表格中的数据,并插入到mysql数据库中

    这个任务通常涉及到两个主要部分:读取Excel文件和与MySQL数据库进行交互。以下是对这两个部分的详细说明: 1. **读取Excel表格**: Excel是一种广泛使用的电子表格软件,其数据格式通常是.XLS或.XLSX。在Python...

    阿里的EasyExcel+Mysql方式实现数据库数据导出生成excel,将excle表里面的数据保存到数据库.zip

    3. **使用EasyExcel写入数据**:调用EasyExcel.write方法,传入文件路径和映射的Java对象,然后遍历数据集,将每条数据写入到对应的Excel行中。 接下来,我们将讨论如何将Excel表中的数据保存到数据库。这个过程...

    C#操作excel 打开-读取-修改-保存 winform入门操作

    使用`EPPlus`库,你可以创建一个`FileInfo`对象来指定要操作的Excel文件路径,然后用这个对象初始化`ExcelPackage`类的实例。例如: ```csharp FileInfo fileInfo = new FileInfo("path_to_your_excel_file.xlsx...

    matlab将多个excel读取并存到一个excel的不同sheet中

    在MATLAB中,读取多个Excel文件并将它们的数据合并到一个新的Excel文件的不同工作表中是一项常见的任务。这个过程涉及到MATLAB的文件I/O操作和数据处理能力,特别是使用`xlsread`或`readtable`函数来读取Excel数据,...

    VB读取EXCEL文件

    ### VB读取EXCEL文件知识点解析 #### 一、概述 在Visual Basic(简称VB)编程环境中,通过创建Excel应用程序对象来实现对Excel文件的读取与写入操作是一种常见的需求。本文将详细介绍如何利用VB读取指定Excel文件...

    如何读取EXCEL文件

    下面是一个使用`pandas`读取Excel文件的示例: ```python import pandas as pd # 读取Excel文件 df = pd.read_excel('文件路径') # 查看数据 print(df) ``` 而`openpyxl`库则用于读取.xlsx格式的文件,它提供了...

Global site tag (gtag.js) - Google Analytics