首页 > 其他分享 >poi与excel表格数据的互转

poi与excel表格数据的互转

时间:2023-04-11 18:00:26浏览次数:41  
标签:en zh HashMap entry excel map2 poi 互转 new

  <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
        </dependency>


import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

import java.io.*;
import java.util.*;

public class POIUtils {

            public static void main(String[] args) throws Exception {
               Map ecMap = importTable();
//                2.拉取excel key中英文 map<中文,list> map1(全部的),
                //map1  map<中文,codes>  (全部的),
                // map<中文,英文> map2(需要修改的资源英文文案)
                //  map<key,中文> map3(剩下的数据),
                // 空 map<key,中文> map4(改好的)
                LinkedMultiValueMap<String, String> map1 = new LinkedMultiValueMap<>(2048);
                HashMap<String, String>  map2 = new HashMap<String, String>();
                HashMap<String, String>  map3 = new HashMap<String, String>();
                HashMap<String, String>  map4 = new HashMap<String, String>();
                importTable2(map1,map2,map3);

                updateMap(ecMap, map1, map2, map3, map4);
                insert_new(map2, map4);
                insert_old(map2,map3);
//                6.将没改好的插入到 中文,key中文进行键值对插入,对应的key3。
//                7.英文同上。


            }

    private static void insert_old(HashMap<String, String> map2,HashMap<String, String> map3) throws  Exception {
        Properties prop_zh = new Properties();
         OutputStream zh_in = new BufferedOutputStream(new FileOutputStream("x\\src\\main\\resources\\bdp_i18n\\old_zh.properties"));
         Iterator<Map.Entry<String, String>> zh_it = map3.entrySet().iterator();
        while (zh_it.hasNext()) {
            Map.Entry<String, String> zh_entry = zh_it.next();
            String entryKey = zh_entry.getKey();
            String entryValue = zh_entry.getValue();
            prop_zh.setProperty(entryKey, entryValue);
        }
        prop_zh.store(zh_in,null);


        Properties prop_en = new Properties();
        OutputStream en_in = new BufferedOutputStream(new FileOutputStream("x\\src\\main\\resources\\bdp_i18n\\old_en.properties"));


        Iterator<Map.Entry<String, String>> en_it = map3.entrySet().iterator();
        while (en_it.hasNext()) {
            Map.Entry<String, String> en_entry = en_it.next();
            String entryKey_en = en_entry.getKey();
            String entryValue_en = en_entry.getValue();
            //根据key中文,找到中文,根据key英文插入英文,这俩可以一起弄
            String yyvalue = map2.get(entryValue_en);
            prop_en.setProperty(entryKey_en,yyvalue);
        }
        prop_en.store(en_in,null);

    }

    private static void insert_new(HashMap<String, String> map2, HashMap<String, String> map4) throws IOException {
    /*  4.插入properties文件中文,去找map4,key中文的进行键值对插入
      5.插入英文,根据key中文,找到中文,根据key英文插入英文,这俩可以一起弄。*/
        Properties prop_zh = new Properties();
         OutputStream zh_in = new BufferedOutputStream(new FileOutputStream("x\\src\\main\\resources\\bdp_i18n\\new_zh.properties"));

       // prop_zh.load(zh_in);
        Iterator<Map.Entry<String, String>> zh_it = map4.entrySet().iterator();
        while (zh_it.hasNext()) {
            Map.Entry<String, String> zh_entry = zh_it.next();
            String entryKey = zh_entry.getKey();
            String entryValue = zh_entry.getValue();
            prop_zh.setProperty(entryKey, entryValue);
        }
        prop_zh.store(zh_in, null);


        Properties prop_en = new Properties();
        OutputStream en_in = new BufferedOutputStream(new FileOutputStream("x\\src\\main\\resources\\bdp_i18n\\new_en.properties"));


        Iterator<Map.Entry<String, String>> en_it = map4.entrySet().iterator();
        while (en_it.hasNext()) {
            Map.Entry<String, String> en_entry = en_it.next();
            String entryKey_en = en_entry.getKey();
            String entryValue_en = en_entry.getValue();
            //根据key中文,找到中文,根据key英文插入英文,这俩可以一起弄
            prop_en.setProperty(entryKey_en, map2.get(entryValue_en));
        }
        prop_en.store(en_in, null);
    }

    /**
     * 修改添加数据。
     * @param ecMap
     * @param map1
     * @param map2
     * @param map3
     * @param map4
     */
    private static void updateMap(Map ecMap, LinkedMultiValueMap<String, String> map1, HashMap<String, String> map2, HashMap<String, String> map3, HashMap<String, String> map4) {
        Iterator<Map.Entry<String, String>> it = ecMap.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String> entry = it.next();
            String entryKey = entry.getKey();
            String entryValue = entry.getValue();
            if(map1.containsKey(entryKey)){
                //1. 修改map2.英文
                map2.put(entryKey,entryValue);
                List<String> codeList = map1.get(entryKey);
                for (int i = 0; i <codeList.size() ; i++) {
                    //把修改成功的加入到新的集合, 删除老的集合。
                    map4.put( codeList.get(i),entryKey);
                    map3.remove( codeList.get(i));
                }

            }
        }
    }

    /**
     * 中英文key导入
     * @return
     */
    private static  void importTable2(LinkedMultiValueMap<String, String> linkedMap,HashMap<String, String> map2,HashMap<String, String> map3) {
        // 创建文件并指定文件路径
        File file = new File("x\\时间-事情\\翻译文案输出.xlsx");
        Map ecMap=new HashMap<String,String>();
        try {
            // 创建改文件的输入流
            FileInputStream stream = new FileInputStream(file);

            // 创建工作簿
            XSSFWorkbook workbook = new XSSFWorkbook(stream);

            // 获取一个工作表,下标从0开始
            XSSFSheet sheet = workbook.getSheetAt(0);

            // 通过循环,逐行取出表中每行数据
            for(int i=0;i<=sheet.getLastRowNum();i++){
                // 获取行
                XSSFRow row = sheet.getRow(i);

                // 获取行中列的数据
                String[] value = new String[3];

                try {//翻译文案key	翻译文案中文	翻译文案英文
                    value[0] = row.getCell(0).getStringCellValue();
                    value[1] = row.getCell(1).getStringCellValue();
                    value[2] = row.getCell(2).getStringCellValue();

                    linkedMap.add(value[1],value[0]);
                    map2.put( value[1] , value[2] );
                    map3.put( value[0] , value[1] );

                } catch (Exception e) {
                    ecMap.remove(value[0]);
                }



            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


    private static  Map<String,String> importTable() {
        // 创建文件并指定文件路径
        File file = new File("x\\newtable.xlsx");
        Map ecMap=new HashMap<String,String>();
        try {
            // 创建改文件的输入流
            FileInputStream stream = new FileInputStream(file);

            // 创建工作簿
            XSSFWorkbook workbook = new XSSFWorkbook(stream);

            // 获取一个工作表,下标从0开始
            XSSFSheet sheet = workbook.getSheetAt(0);

            // 通过循环,逐行取出表中每行数据
            for(int i=0;i<=sheet.getLastRowNum();i++){
                // 获取行
                XSSFRow row = sheet.getRow(i);

                // 获取行中列的数据
                String[] value = new String[3];

                try {
                    value[0] = row.getCell(0).getStringCellValue();
                    value[1] = row.getCell(1).getStringCellValue();
                    ecMap.put(value[0],value[1]);
                } catch (Exception e) {
                    ecMap.remove(value[0]);
                }



            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ecMap;
    }
}




标签:en,zh,HashMap,entry,excel,map2,poi,互转,new
From: https://www.cnblogs.com/q1359720840/p/17307144.html

相关文章

  • Java实现Excel导入和导出,看这一篇就够了(珍藏版)
    前言Java实现表格的相关操作进行了封装,本次封装是基于POI的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。1.功能测试1.1测试准备在做测试前,我们需要將【2.环境准备】中的四个文件拷贝在工程里(如:我这里均放在了com.zyq.util.exc......
  • 封装导出Excel文件
    utils/exportexcel.jsimport{parseTime}from'@/utils/format';import{Message}from'element-ui';/***导出Excel文件*@param{*}data文件数据流*@param{String}filePrefix文件前缀名*@param{String}fileSuffix文件后缀名*/exportfuncti......
  • 在EXCEL和WPS表格里实现邮件合并功能
    在EXCEL和WPS表格里实现邮件合并功能2020/3/2122:06:09 0人评论 10635次OFFICE邮件合并:在Office中,先建立两个文档:一个WORD包括所有文件共有内容的主文档(比如未填写的信封等)和一个包括变化信息的数据源EXCEL(填写的收件人、发件人、邮编等),然后使用邮件合并功能在主文档中插入......
  • vue 预览PDF、Docx、EXCEL文件
      <template><divclass="contentArea"><divclass="fileContainer"ref="fileDiv"v-if="$route.query.fileName.indexOf('docx')!==-1"></div><divclass="f......
  • 在浏览器和node中使用 GitHub的js-xlsx库进行Excel文件处理(一)
    1.简介js-xlsx库是目前Github上star数量最多的处理Excel的库,功能强大,提供了各种对表格的操作,但是这个项目文档有些乱,提供的demo也只具备最基本的功能。Demo地址:http://oss.sheetjs.com/js-xlsxGithub上源码地址:http://git.io/xlsx支持解析的格式有:Excel2007+XML......
  • python3写csv中文文件,可以直接excel打开
    写出python3代码:将如下数据转为windowsexcel文件。 importcsvdata=[[1010205,'2022/11/23','R染(Inception)攻击','T89','在远程系统的启动文件登录后可以自动执行恶意脚本或可执行文件。','例:copyrogramData\Microsoft\W\Programs\StartUp',4,85,......
  • excel切片器多表/多图联动
    1、以相同的数据源建立不同维度的透视表(这一步最关键,数据源必须相同,否则无法进行多表链接)  2、选择期中一个数据透视表插入切片器  3、切片器空白处右键选择报表链接  4、在需要联动的透视表打勾即可以透视表为基础制作图标,即可实现多图联动 ......
  • 读论文2-Line Exhaustive Searching for Real-Time Vanishing Point Estimation in Ma
    曼哈顿世界中实时消失点估计的2行穷尽搜索1.Abstract本文介绍了一种非常简单和高效的算法,用于在曼哈顿世界中的校准图像上估计1、2或3个正交消失点。与传统方法使用1、3、4或6条线生成消失点假设不同,(基本方法)我们建议使用2条线获取第一个消失点v1,然后在等效球面上v1的大圆上均匀取......
  • Pandas模块实现向Excel写入数据
    Pandas模块实现向Excel写入数据importpandasaspddfData={#用字典设置DataFrame所需数据'序号':data[0],'项目':data[1],'数据':data[2]}#创建DataFramedf=pd.DataFrame(dfData)#存表,去除原始索引列(0,1,2...)df.to_excel(fi......
  • xlsxwriter模块实现向Excel表写数据
    xlsxwriter模块实现向Excel表写数据导入第三方库importxlsxwriterasxw写数据#创建工作簿workbook=xw.Workbook(filename)#创建子表worksheet1=workbook.add_worksheet("sheet1")#激活表worksheet1.activate()#设置表头title=['序号','项目','数据&#......