本文主要是介绍JXL操作excel总结(3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/**
* 清空数据库,为下次倒入数据库做准备
*/
public void delAllData(){
Connection conn=null;
PreparedStatement ps=null;
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=mingyuan_1986");
ps=conn.prepareStatement("delete from excel");
ps.execute();
}catch(ClassNotFoundException e){
System.out.println("加载数据库驱动失败!");
}catch(SQLException e){
e.printStackTrace();
System.out.println("删除失败");
}finally{
try {
ps.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("关闭连接失败!");
}
}
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ReadAndWriteExcel rwe = new ReadAndWriteExcel();
rwe.readExcel();//读取excel数据,并将其写入到数据库中
rwe.writeExcel();//读取数据库中的数据,并将其写入到excel中
rwe.delAllData();//删除数据库中的所有数据,为下次录入做准备
}
}
1. 遇到的问题
a) 读取excel文件失败:不可识别的OLE流
解决方案是将原来的数据拷贝到一个新建的excel文件中即可,问题产生的原因网上有两种说法:1.excel版本和jxl不兼容;2.excel有宏或者什么东西限制了jxl读取。
b) 读取数据库速度过慢
问题产生的原因是表中数据量过大(1205191条之多)。解决办法是对每个字段均建立索引:
Create index idx_time on excel(time);
Create index idx_location on excel(location);
Create index ind_data on excel(data);
这样以来从过去执行检索需要11秒时间降低到现在的3.8秒,执行速度大大加快。
c) Jvm内存用尽
在执行填充excel的时候产生jvm耗尽的情况,最开始是想找jxl中的解决方案,比如说是分批写入,可是jxl不提供这样的方法。于是尝试修改了jvm的启动参数,如图三所示。
这篇关于JXL操作excel总结(3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!