java poi excel关于数据碰撞和excel数据追加

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32403351/article/details/74840852
package excel;

import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableWorkbook;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.*;

import static java.lang.System.in;

/**
 * excel 数据碰撞 并追加所需要的数据
 * Created by zhanghb on 2017/7/7.
 */
public class ExcelTest {
    public static void main(String[] args) throws Exception {
        List<String> dongcai = test1();
        Map<String, String> chm = test2();
        //Excel进行数据追加
        //FileInputStream fs = new FileInputStream("F:/项目实例/excel数据碰撞实例/指标/excel/东财证券(证券类).xls");  //获取
        FileInputStream fs = new FileInputStream("F:/项目实例/excel数据碰撞实例/指标/excel/东财证券(保险类).xls");  //获取d://test.xls
        //FileInputStream fs = new FileInputStream("F:/项目实例/excel数据碰撞实例/指标/excel/东财证券(通用类).xls");  //获取d://test.xls
        //FileInputStream fs = new FileInputStream("F:/项目实例/excel数据碰撞实例/指标/excel/东财证券(银行类).xls");  //获取d://test.xls
        POIFSFileSystem ps = new POIFSFileSystem(fs);  //使用POI提供的方法得到excel的信息
        HSSFWorkbook wb = new HSSFWorkbook(ps);
        HSSFSheet sheet = wb.getSheetAt(0);  //获取到工作表,因为一个excel可能有多个工作表

        for (int i = 0; i < dongcai.size(); i++) {
            String key=dongcai.get(i).trim();
            String englishName=chm.get(key).trim();
            if(englishName!=null){
                System.out.print(dongcai.get(i) + "/" + chm.get(key) + "/" + key + " ");
                //获取第一行(excel中的行默认从0开始,所以这就是为什么,一个excel必须有字段列头),即,字段列头,便于赋值
                HSSFRow row = sheet.getRow(i);
                row.createCell(1).setCellValue(englishName); //设置第一个(从0开始)单元格的数据
            }
        }
        FileOutputStream out = new FileOutputStream("F:/项目实例/excel数据碰撞实例/指标/excel/最新/最新的数据(东财保险).xls");
        wb.write(out);
        out.close();
    }

    /**
     * 读取东财数据模块
     */
    public static List<String> test1() {
        Workbook readwb = null;
        Cell cell = null;
        //创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回
        List<String> list = new ArrayList<String>();
        try {
            //构建Workbook对象, 只读Workbook对象
            //直接从本地文件创建Workbook
            //File file = new File("F:/项目实例/excel数据碰撞实例/指标/excel/东财证券(证券类).xls");
            File file = new File("F:/项目实例/excel数据碰撞实例/指标/excel/东财证券(保险类).xls");
            //File file = new File("F:/项目实例/excel数据碰撞实例/指标/excel/东财证券(证券类).xls");
            //File file = new File("F:/项目实例/excel数据碰撞实例/指标/excel/东财证券(证券类).xls");
            InputStream instream = new FileInputStream(file);
            readwb = Workbook.getWorkbook(instream);
            //Sheet的下标是从0开始
            //获取第一张Sheet表
            Sheet readsheet = readwb.getSheet(0);
            //获取Sheet表中所包含的总列数
            // int rsColumns = readsheet.getColumns();
            //获取Sheet表中所包含的总行数
            int rsRows = readsheet.getRows();
            //获取指定单元格的对象引用
            for (int i = 0; i < rsRows; i++) {
                cell = readsheet.getCell(0, i);//取得第i行,第一列值
                //判断是否存在(单季度.),如果存在则去掉(单季度.)存入list中
                if (cell.getContents().trim().contains("单季度.")) {
                    String[] val = cell.getContents().trim().split("单季度.");
                    list.add(val[1].trim());
                }else{
                    list.add(cell.getContents().trim());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            readwb.close();
        }
        return list;
    }

    /**
     * 读取CHM数据模块
     */
    public static Map<String, String> test2() {
        Workbook readwb = null;
        Cell key = null;
        Cell value = null;
        //创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回
        Map<String, String> map = new HashMap<String, String>();
        try {
            //构建Workbook对象, 只读Workbook对象
            //直接从本地文件创建Workbook
            //File file = new File("F:/项目实例/excel数据碰撞实例/指标/excel/证券类chm.xls");
            File file = new File("F:/项目实例/excel数据碰撞实例/指标/excel/保险类chm.xls");
            //File file = new File("F:/项目实例/excel数据碰撞实例/指标/excel/证券类chm.xls");
            //File file = new File("F:/项目实例/excel数据碰撞实例/指标/excel/证券类chm.xls");
            InputStream instream = new FileInputStream(file);
            readwb = Workbook.getWorkbook(instream);
            //Sheet的下标是从0开始
            //获取第一张Sheet表
            Sheet readsheet = readwb.getSheet(0);
            //获取Sheet表中所包含的总列数
            // int rsColumns = readsheet.getColumns();
            //获取Sheet表中所包含的总行数
            int rsRows = readsheet.getRows();
            //获取指定单元格的对象引用
            for (int i = 0; i < rsRows; i++) {
                key = readsheet.getCell(0, i);//取得第i行,第一列值
                value = readsheet.getCell(1, i);//取得第i行,第一列值
                map.put(value.getContents().trim(), key.getContents().trim());
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            readwb.close();
        }
        return map;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_32403351/article/details/74840852
今日推荐