版权声明:本文为博主原创文章,未经博主允许不得转载。 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; } }