Java读取Excle创建Oracle语句

文章目录Java读取Excle创建Oracle语句遇到的问题及解决方案:excle 模版:依赖:方法:buildCreateOracleTableSQL();源码Java读取Excle创建Oracle语句遇到的问题及解决方案:excle 模版:依赖: <dependency> <groupId>net.sourceforge.jexce...
摘要由CSDN通过智能技术生成

Java读取Excle创建Oracle语句

遇到的问题及解决方案:

异常

jxl.read.biff.BiffException: Unable to recognize OLE stream
	at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
	at jxl.read.biff.File.<init>(File.java:127)
	at jxl.Workbook.getWorkbook(Workbook.java:268)
	at jxl.Workbook.getWorkbook(Workbook.java:253)

解决方案

在这里插入图片描述

excle 模版:

在这里插入图片描述

依赖:

 <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.10</version>
 </dependency>

方法:buildCreateOracleTableSQL();

源码

package demo.js.pms.ips.common;

import demo.js.pms.ips.pojo.po.erp.mft.TErpApPaymentDist;
import demo.js.pms.ips.pojo.po.erp.mft.TErpApPaymentHead;
import demo.js.pms.ips.pojo.po.erp.mft.TErpApPaymentLine;
import jxl.Sheet;
import jxl.Workbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.*;

/**
 * 解析wsdl pdf文档中的字段申明表格,输出创建Oracle表的SQL
 * 用法
 * 1.将pdf文件在线转成word文档(https://www.cleverpdf.com/cn/pdf-to-word或https://www.pdfpai.com/pdf-to-word(国内镜像网站))
 * 2.将word文档中的需要创建数据库表的字段申明表格,粘贴到97-2003版本的excel文档中
 * 3.修改excel的格式,删除空白行,保证表格数据从第二行第二列开始,数据列依次为字段名,字段描述,字段类型,备注
 * 4.修改代码中文件路径为该excel路径(不要放在C盘)和创建的数据库表名,表空间默认是system,可以根据需要修改
 * 5.运行程序,将输出的SQL语句粘贴到PLSQL执行
 */
public class TableExcelParser
{
   
    //解析数据开始的行(索引从0开始)
    private static final int PARSE_START_ROW = 1;
    //解析数据开始的列(索引从0开始)
    private static final int PARSE_START_COL = 1;
    //最大表名长度
    private static final int MAX_TABLE_NAME_LENGTH = 25;

    private static final String DEFAULT_TABLE_SPACE = "system";

    public static void main(String[] args) throws Exception
    {
   
//        buildOAUserSelectIn();
        buildCreateOracleTableSQL();
//        buildInsertBatchSQLPart(TBpVendor.class);
//        testPropertyMap();
//        MakeClassStatementForDotNet(PROJECTTASKINFOITEM.class);//40,35,9
//		MakeClassStatementWithoutGetterSetter(PROJECTTASKINFOITEM.class);
//       testMftDataParse();
    }

    private static void buildOAUserSelectIn() throws Exception
    {
   
        // 创建输入流,读取Excel
        InputStream is = new FileInputStream(new File("D:\\tableExcel\\OAUser.xls"));
        // jxl提供的Workbook类
        Workbook wb = Workbook.getWorkbook(is);
        Sheet sheet = wb.getSheet(0);
        int startCol = 2;
        String format = "select * from oa_user where OAU_EMPLOYEENUMBER in( %s )";
        String itemFormat = "'%s'";
        String split = ", ";
        StringBuilder selectSB = new StringBuilder();
        for (int row = 1; row < sheet.getRows(); row++)
        {
   
            String colName = sheet.getCell(startCol, row).getContents().trim();

            //列名和类型不能为空,否则认为是空行
            if (colName.isEmpty())
            {
   
                System.out.println("读取到空行,停止解析:" + (row + 1));
                break;
            }

            //消掉多余的换行符
            colName = colName.replaceAll("\\n", "").replaceAll("\\r", "");
            selectSB.append(String.format(itemFormat, colName)).append(split);
        }

        selectSB.delete(selectSB.length() - split.length(), selectSB.length() - 1);

        System.out.println(String.format(format, selectSB.toString()));
    }

    /**
     * 将Java类转化为.Net类的声明文本输出
     * 场景:用于EPMS和IPS接口数据序列化类
     *
     * @param clazz
     */
    public static void MakeClassStatementForDotNet(Class clazz)
    {
   
        if (clazz == null)
        {
   
            return;
        }

        String classStatementFormat = "public class %s{\n%s}";
        String propertyStatement = "public %s %s { get;set; }\n";

        StringBuilder propertyStringBuilder = new StringBuilder();
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields)
        {
   
            propertyStringBuilder.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值