• 从excel中转存sql


    1、pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.20.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>cb.tool</groupId>
        <artifactId>analyse</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>analyse</name>
        <description>analyse tool</description>
     
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
            <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
            <commons-lang3.version>3.6</commons-lang3.version>
            <fastjson.version>1.2.31</fastjson.version>
        </properties>
     
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.31</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
     
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
     
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
     
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
     
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
     
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
            </dependency>
     
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
            </dependency>
     
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
     
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>
            <!-- start https -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </dependency>
            <!-- end https -->
     
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>4.1.3</version>
            </dependency>
     
            <dependency>
                <groupId>com.belerweb</groupId>
                <artifactId>pinyin4j</artifactId>
                <version>2.5.0</version>
            </dependency>
     
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>
     
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.9</version>
            </dependency>
     
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.9</version>
            </dependency>
     
        </dependencies>
     
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                </plugin>
                <!-- maven打包插件 end -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <configuration>
                        <warName>analyse</warName>
                    </configuration>
                </plugin>
            </plugins>
            <resources>
                <resource>
                    <directory>src/main/webapp</directory>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>application.yml</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                </resource>
            </resources>
        </build>
     
    </project>

    2、controller层

    @RequestMapping("/sumUpdate")
    @ResponseBody
    public String updateDealSumInfo() {
     
        realTimeDealService.updateDealSumInfo();
        return "sumUpdate ok";
    }

    3、service层

    @Override
        public void updateDealSumInfo() {
            String dirPath = PropConfig.getXls();
            File dir = new File(dirPath);
            File[] fs = dir.listFiles();
            StringBuilder sb=new StringBuilder();
            if (fs != null) {
                for (File f : fs) {
                    if (f.isFile()) {
                        String fName = f.getName().split("\.")[0];
     
                        HSSFWorkbook workbook = null;
                        FileInputStream excelFileInputStream = null;
                        try {
                            excelFileInputStream = new FileInputStream(dirPath + f.getName());
                            workbook = new HSSFWorkbook(excelFileInputStream);
                            HSSFSheet sheet1 = workbook.getSheetAt(0);
                            HashMap<String, Integer> keyMap = new HashMap<>();
                            getTitleIndex(sheet1, keyMap);
                            int lastRowNum = sheet1.getLastRowNum();
                            HashMap<String, String> nameMap=new HashMap();
                            HashMap<String, String> codeMap=new HashMap();
                            for (int i = 1; i <=lastRowNum; i++) {  // i=1 : from 2th row exclude titile
                                HSSFRow row = sheet1.getRow(i);
                                String hosopt_name = getCellStrVal(row.getCell(keyMap.get("hosopt_name")));
                                if(!nameMap.containsKey(hosopt_name)){
                                    nameMap.put(hosopt_name,"1");
                                }else {
                                    continue;
                                }
                                String pinyin = HanyuPinyinHelper.getFirstLettersUp(hosopt_name);
                                if(!codeMap.containsKey(pinyin)){
                                    codeMap.put(pinyin,pinyin);
                                }else {
                                    codeMap.put(pinyin,pinyin+i);
                                }
                                pinyin=codeMap.get(pinyin);
                                sb.append("insert into oi_hos_custom_opt(`hosopt_name`, `spell_code`, `cust_code`) values('")
                                        .append(hosopt_name).append("','").append(pinyin).append("','").append(pinyin).append("');").append("
    ");
                            }
                        } catch (IOException e) {
                            logger.error("read excel error", e);
                        } finally {
                            if (excelFileInputStream != null) {
                                try {
                                    excelFileInputStream.close();
                                } catch (IOException e) {
                                    logger.error("excelFileInputStream close error");
                                }
                            }
                        }
                    }
                }
            }
            System.out.println(sb.toString());
        }
    private void getTitleIndex(HSSFSheet sheet1, HashMap<String, Integer> keyMap) {
        HSSFRow firstRow = sheet1.getRow(0);
        short firstCellNum = firstRow.getFirstCellNum();
        short lastCellNum = firstRow.getLastCellNum();
        for (int i = firstCellNum; i <= lastCellNum; i++) {
            String cellStrVal = getCellStrVal(firstRow.getCell(i));
            if (cellStrVal.equals("手术名称")) {
                keyMap.put("hosopt_name", i);
            }
        }
    }

    4、工具类

    package cb.tool.analyse.util;
     
    import net.sourceforge.pinyin4j.PinyinHelper;
    import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
    import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
    import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
     
    public class HanyuPinyinHelper {
     
        /**
         * 将文字转为汉语拼音
         * @param ChineseLanguage 要转成拼音的中文
         */
        public static String toHanyuPinyin(String ChineseLanguage){
            char[] cl_chars = ChineseLanguage.trim().toCharArray();
            String hanyupinyin = "";
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部小写
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
            defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;
            try {
                for (int i=0; i<cl_chars.length; i++){
                    if (String.valueOf(cl_chars[i]).matches("[u4e00-u9fa5]+")){// 如果字符是中文,则将中文转为汉语拼音
                        hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];
                    } else {// 如果字符不是中文,则不转换
                        hanyupinyin += cl_chars[i];
                    }
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                System.out.println("字符不能转成汉语拼音");
            }
            return hanyupinyin;
        }
     
        public static String getFirstLettersUp(String ChineseLanguage){
            return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.UPPERCASE);
        }
     
        public static String getFirstLettersLo(String ChineseLanguage){
            return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.LOWERCASE);
        }
     
        public static String getFirstLetters(String ChineseLanguage,HanyuPinyinCaseType caseType) {
            char[] cl_chars = ChineseLanguage.trim().toCharArray();
            String hanyupinyin = "";
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(caseType);// 输出拼音全部大写
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
            try {
                for (int i = 0; i < cl_chars.length; i++) {
                    String str = String.valueOf(cl_chars[i]);
                    if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
                        hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0].substring(0, 1);
                    } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
                        hanyupinyin += cl_chars[i];
                    } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
                        hanyupinyin += cl_chars[i];
                    } else {// 否则不转换
                        hanyupinyin += cl_chars[i];//如果是标点符号的话,带着
                    }
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                System.out.println("字符不能转成汉语拼音");
            }
            return hanyupinyin;
        }
     
        public static String getPinyinString(String ChineseLanguage){
            char[] cl_chars = ChineseLanguage.trim().toCharArray();
            String hanyupinyin = "";
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部大写
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
            try {
                for (int i = 0; i < cl_chars.length; i++) {
                    String str = String.valueOf(cl_chars[i]);
                    if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
                        hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(
                                cl_chars[i], defaultFormat)[0];
                    } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
                        hanyupinyin += cl_chars[i];
                    } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
     
                        hanyupinyin += cl_chars[i];
                    } else {// 否则不转换
                    }
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                System.out.println("字符不能转成汉语拼音");
            }
            return hanyupinyin;
        }
        /**
         * 取第一个汉字的第一个字符
         * @Title: getFirstLetter
         * @Description: TODO
         * @return String
         * @throws
         */
        public static String getFirstLetter(String ChineseLanguage){
            char[] cl_chars = ChineseLanguage.trim().toCharArray();
            String hanyupinyin = "";
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部大写
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
            try {
                String str = String.valueOf(cl_chars[0]);
                if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
                    hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(
                            cl_chars[0], defaultFormat)[0].substring(0, 1);;
                } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
                    hanyupinyin += cl_chars[0];
                } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
     
                    hanyupinyin += cl_chars[0];
                } else {// 否则不转换
     
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                System.out.println("字符不能转成汉语拼音");
            }
            return hanyupinyin;
        }
     
        public static void main(String[] args) {
            System.out.println(HanyuPinyinHelper.toHanyuPinyin("中秋节"));
        }
    }

    5、配置文件:

    file:
      xls: E:myFilesdataa
  • 相关阅读:
    vscode常用插件列表
    使用docker构建supervisor全步骤
    docker删除虚悬镜像(临时镜像文件)
    消息队列的对比
    ECharts使用:this.dom.getContext is not a function
    curl命令行请求
    工作工具清单
    《SQL优化入门》讲座总结
    初始化git库并配置自动部署
    php代码进行跨域请求处理
  • 原文地址:https://www.cnblogs.com/javabg/p/11573174.html
Copyright © 2020-2023  润新知