你好,请问, 请问使用的是4.2的HXTT Excel,我这边有2个问题,麻烦帮我解答下。
问题如下:
1、url 是直接写死到具体的xlsx吗,如:jdbc:excel:/c:/data/aa/xlsx;
2、我在使用select * from sheet的时候,我这个sheet的名字如何获取,我有很多excel 要判断这个excel 是否是可以正常打开的,但是现在有个问题就是,我的sheet 名字是不知道的,在不知道sheet 名字的前提下如何使用 sql 语句查询这个表?
|
> 1、url 是直接写死到具体的xlsx吗,如:jdbc:excel:/c:/data/aa/xlsx;
可以
jdbc:excel:/c:/data/aa.xlsx; 然后 select * from sheet1;
也可以
jdbc:excel:/c:/data/; 然后 select * from aa.sheet1;
>我在使用select * from sheet的时候,我这个sheet的名字如何获取,我有很多excel 要判断这个excel 是否是可以正常打开
两个方法
一个是 DatabaseMetaData.getTables
另外一个简单些,直接使用sql:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='TABLE';
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='TABLE' and TABLE_NAME='sheet1';
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='TABLE' and TABLE_NAME='sheet1' and TABLE_CAT='testzzz.xlsx';
|
注意:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='TABLE' and TABLE_NAME='sheet1' and TABLE_CAT='testzzz.xlsx';
使用这句,如果返回了,则excel可以正常打开,目前由于支持Excel95~2016格式,一般都能打开。
加密数据的不能打开,加口令的可以。
|
您好,我现在有几千条xlsx跟xls后缀的文件,如何判断这些文件是否破损。一下是我的一些问题。
1、我现在是for循环getConnection(), 然后执行sql,现在循环3000多次, 执行几百次后没反应了。 我是使用jdbc的没有使用连接池,请问,是连接数过多导致的吗?
2、还有一个问题就是,如果一个sheet的的名字是0000 例如
select * from 0000 这条语句就报错。不知道其他的一些字符会不会报错。
|
1、 使用 delayedClose=0 尽快释放 因为一个连接中使用连接池管理(对于一个xlsx,可能会暂借3~4个线程进行解析,文件关闭前对于大xml文件可能还占了1个处于待命状态),由于使用的是按需异步解析(并不是将xml一口气解完),当xml解析处于等待状态时候延时关闭前要占用线程(sleep or wait状态).
2、 使用 SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='TABLE' and TABLE_NAME='sheet1' and TABLE_CAT='testzzz.xlsx'; 如果一个table都没有返回,就是坏文件。
3、sheet名用"" 或者[]括起来即可
|
哦,写错
2、 使用 SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='TABLE' and TABLE_CAT='testzzz.xlsx'; 如果一个table都没有返回,就是坏文件。
|