总结,记录 JAVA中实现对Excel的导入与导出 POI和jxl.jar性能比较 https://blog.csdn.net/jarvis_java/article/details/4924099

第一,mysql的存储过程

转载自 https://www.cnblogs.com/chenpi/p/5136483.html

Mysql中的存储过程

什么是存储过程

简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;

ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;

有哪些特性

有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;

函数的普遍特性:模块化,封装,代码复用;

速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;

第二,

JAVA中实现对Excel的导入与导出

转载自:https://blog.csdn.net/nieguohui94/article/details/78011813

1 使用Jxl实现Excel的导入与导出

1 ) 新建实体类Book

  1. package com.bean;  
  2.   
  3. public class Book {  
  4.     private Integer id ;  
  5.     private String  name ;  
  6.     private String  author;  
  7.     public Integer getId() {  
  8.         return id;  
  9.     }  
  10.     public void setId(Integer id) {  
  11.         this.id = id;  
  12.     }  
  13.     public String getName() {  
  14.         return name;  
  15.     }  
  16.     public void setName(String name) {  
  17.         this.name = name;  
  18.     }  
  19.     public String getAuthor() {  
  20.         return author;  
  21.     }  
  22.     public void setAuthor(String author) {  
  23.         this.author = author;  
  24.     }  
  25.       
  26.       

2 ) 定义导入与导出方法

package com.main;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.bean.Book;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class ExcleBook {
    /**
     * 针对Book类进行导出的操作
     * @param list
     */
    public void excleOut(List<book> list) {
        WritableWorkbook book = null;
        try {
            // 创建一个excle对象
            book = Workbook.createWorkbook(new File("h:/excleTest/book.xls"));
            // 通过excle对象创建一个选项卡对象
            WritableSheet sheet = book.createSheet("sheet1", 0);
            // 创建一个单元格对象 列 行 值
            // Label label = new Label(0, 2, "test");
            for (int i = 0; i < list.size(); i++) {
                Book book2 = list.get(i);
                Label label1 = new Label(0, i, String.valueOf(book2.getId()));
                Label label2 = new Label(1, i, book2.getName());
                Label label3 = new Label(2, i, book2.getAuthor());

                // 将创建好的单元格对象放入选项卡中
                sheet.addCell(label1);
                sheet.addCell(label2);
                sheet.addCell(label3);
            }
            // 写入目标路径
            book.write();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                book.close();
            } catch (WriteException | IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    /**
     * 针对Book类进行导入的操作
     * @return
     */
    public List<book> excleIn() {
        List<book> list = new ArrayList<>();
        Workbook workbook = null;
        try {
            // 获取Ecle对象
            workbook = Workbook.getWorkbook(new File("h:/excleTest/book.xls"));
            // 获取选项卡对象 第0个选项卡
            Sheet sheet = workbook.getSheet(0);
            // 循环选项卡中的值
            for (int i = 0; i < sheet.getRows(); i++) {
                Book book = new Book();
                // 获取单元格对象
                Cell cell0 = sheet.getCell(0, i);
                // 取得单元格的值,并设置到对象中
                book.setId(Integer.valueOf(cell0.getContents()));
                // 获取单元格对象,然后取得单元格的值,并设置到对象中
                book.setName(sheet.getCell(1, i).getContents());
                book.setAuthor(sheet.getCell(2, i).getContents());
                list.add(book);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            workbook.close();
        }
        return list;
    }

    public static void main(String[] args) {
        ExcleBook book = new ExcleBook();
        List<book> list = new ArrayList<>();
        Book book2 = new Book();
        book2.setId(1);
        book2.setName("书本名1");
        book2.setAuthor("张三");
        Book book3 = new Book();
        book3.setId(2);
        book3.setName("书本名2");
        book3.setAuthor("李四");
        list.add(book2);
        list.add(book3);
        book.excleOut(list);
        List<book> books = book.excleIn();
        for (Book bo : books) {
            System.out.println(bo.getId() + " " + bo.getName() + " " + bo.getAuthor());
        }
    }
}

2 使用Poi实现Excel的导入与导出

我们在网上找 POI下载的时候,会发现它有点大,而且还有几个不同的包,那么我们到底需要那个。如果你只需要对xls文件进行解释,只需要加入poi-Version.jar;如果要对xlsx文件进行解释,那么你需要加入poi-ooxml-Version.jar;如果你要对word、ppt、viso、outlook等时需要用到poi-scratchpad-version-yyyymmdd.jar。因为我们这里只是对xls文件解释,所以我们加入的poi-3.17.jar这个文件

package com.main;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.bean.Book;

public class ExclePoiBook {
    /**
     * 针对Book类进行导出的操作
     *
     * @param list
     */
    public void excleOut(List<book> list) {
        // 创建Excel文档
        HSSFWorkbook hwb = new HSSFWorkbook();
        // 通过excle对象创建一个选项卡对象
        HSSFSheet sheet = hwb.createSheet("sheet1");
        Book book = null;
        // 循环list创建行
        for (int i = 0; i < list.size(); i++) {
            // 新建一行
            HSSFRow row = sheet.createRow(i);
            book = list.get(i);
            // 设置i+1行第0列的数据
            row.createCell(0).setCellValue(book.getId());
            // 设置i+1行第1列的数据
            row.createCell(1).setCellValue(book.getName());
            // 设置i+1行第2列的数据
            row.createCell(2).setCellValue(book.getAuthor());
        }
        OutputStream out = null;
        try {
            out = new FileOutputStream("h:/excleTest/bookPoi.xls");
            hwb.write(out);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                out.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    /**
     * 针对Book类进行导入的操作
     *
     * @return
     */
    public List<book> excleIn() {
        List<book> list = new ArrayList<>();
        Book book = null;
        try {
            InputStream is = new FileInputStream("h:/excleTest/bookPoi.xls");
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
            // 获取选项卡对象 第0个选项卡 , 因为我们这里只有一个选项卡,如果你每个选项卡的内容是一样,可以通过循环取出
            HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
            // 循环取出每行的值
            for (int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
                HSSFRow hssfRow = hssfSheet.getRow(rowNum);
                book = new Book();
                //注意Poi读取的内容是有类型的,处理起来也jxl有所不同
                book.setId((int) hssfRow.getCell(0).getNumericCellValue());
                book.setName(hssfRow.getCell(1).getStringCellValue());
                book.setAuthor(hssfRow.getCell(2).getStringCellValue());
                list.add(book);
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list;
    }
    public static void main(String[] args) {
        ExclePoiBook exclePoiBook = new ExclePoiBook();
        List<book> list = new ArrayList<>();
        Book book2 = new Book();
        book2.setId(1);
        book2.setName("书本名1");
        book2.setAuthor("张三");
        Book book3 = new Book();
        book3.setId(2);
        book3.setName("书本名2");
        book3.setAuthor("李四");
        list.add(book2);
        list.add(book3);
        exclePoiBook.excleOut(list);
        List<book> books = exclePoiBook.excleIn();
        for (int i = 0; i < books.size(); i++) {
            System.out.println(books.get(i).getId()  + " " + books.get(i).getName() + " " + books.get(i).getAuthor());
        }
    }
}

POI和jxl.jar性能比较

https://blog.csdn.net/jarvis_java/article/details/4924099


猜你喜欢

转载自blog.csdn.net/weixin_42102798/article/details/80911900