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

来源:互联网 发布:淘宝手机版怎么看信誉 编辑:程序博客网 时间:2024/06/05 09:35
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;    }}
原创粉丝点击