项目开发中遇到过通过java生成多个excel,然后再合并为一个统一excel的需求。
在合并过程中,如果某个excel存在异常,就会报错,因此需要判断一下生成的excel能否正常打开。这些处理需要在后台进行,用户在使用过程中是感觉不到的,因此不能直接通过cmd命令去打excel,可以通过如下代码判断。

// 检查生成的Excel是否可以正常打开
// excelPath为需要检查的excel路径CheckExcelStatus checkExcel = new CheckExcelStatus();// Excel可以正常打开时关闭Excelif(checkExcel .openExcelFile(excelPath)){checkExcel .closeExcelFile(false);}else{// 无法正常打开时报错outputFlg = false;MessageBox.post("生成的excel文档无法正常打开,请确认。" , "错误", MessageBox.ERROR);}public class CheckExcelStatus{public ActiveXComponent activexcomponent;public Dispatch workbooks = null;public Dispatch workbook = null;public Dispatch sheet = null;public Vector< String > oldSheetName = new Vector< String >();private HashMap<String,String> fileType=new HashMap<String,String>();{fileType.put("txt", "icons/txticon.exe");fileType.put("doc", "icons/wordicon.exe");fileType.put("xls", "icons/excelicon.exe");fileType.put("pdf", "icons/pdficon.ico");}private Vector<String> imageType=new Vector<String>();{imageType.add("bmp");imageType.add("jpg");imageType.add("jpeg");imageType.add("gif");}/*** @param args*/public static void main(String[] args) {JacobCheckExcel jacobexcel=new JacobCheckExcel();System.out.println( jacobexcel.getExcelApplicationVersion() );}public void saveAsExcelFile(String fileName) {try {Dispatch.call(sheet, "Select");File f = new File(fileName);f.delete();Dispatch.invoke(workbook, "SaveAs", Dispatch.Method,new Object[] { fileName }, new int[1]);} catch (Exception e) {System.out.println("另存为时出错...");e.printStackTrace();}}public void closeExcelFile(boolean close) {try {Dispatch.call((Dispatch) workbook, "Save");Dispatch.call((Dispatch) workbook, "Close", new Variant(close));} catch (Exception e) {System.out.println("保存关闭时出错...");e.printStackTrace();} finally {activexcomponent.invoke("Quit", new Variant[] {});}}public void openExcelFile(String filename,String sheetName){try {activexcomponent = new ActiveXComponent("Excel.Application");activexcomponent.setProperty("Visible", new Variant(false));workbooks = activexcomponent.getProperty("Workbooks").toDispatch();workbook = Dispatch.invoke(workbooks,"Open",Dispatch.Method,new Object[] { filename, new Variant(false), new Variant(false)},// 是否以只读方式打开new int[1]).toDispatch();Dispatch sheets = Dispatch.get((Dispatch) workbook,"Sheets").toDispatch();sheet = Dispatch.invoke(sheets, "Item", Dispatch.Get,new Variant[] { new Variant(sheetName) },new int[1]).toDispatch();//激活sheet工作表Dispatch.call(sheet, "Activate");} catch (Exception e) {System.out.println("打开EXCEL时出错...");e.printStackTrace();}}// 根据路径打开excel文档public boolean openExcelFile(String filename){boolean openExcelFlg = true;try {activexcomponent = new ActiveXComponent("Excel.Application");activexcomponent.setProperty("Visible", new Variant(false)); // 在后台打开workbooks = activexcomponent.getProperty("Workbooks").toDispatch();workbook = Dispatch.invoke(workbooks,"Open",Dispatch.Method,new Object[] { filename, new Variant(false), new Variant(false)},// 是否以只读方式打开new int[1]).toDispatch();Dispatch sheets = Dispatch.get((Dispatch) workbook,"Sheets").toDispatch();int sheetCnt = Dispatch.get(  sheets , "Count").toInt();for(int i = 0; i < sheetCnt; i  ++ ){int SheetIdx = i +1;Dispatch tmpsheet = Dispatch.invoke( sheets , "Item" , Dispatch.Get , new Object[]{SheetIdx} , new int[1] ).toDispatch();if( tmpsheet != null ){oldSheetName.add( new String( Dispatch.get( tmpsheet , "Name" ).toString() ));}}sheet = Dispatch.invoke(sheets, "Item", Dispatch.Get,new Variant[] { new Variant(1) },new int[1]).toDispatch();//激活sheet工作表Dispatch.call(sheet, "Activate");} catch (Exception e) {System.out.println("打开EXCEL时出错...");openExcelFlg = false;e.printStackTrace();}return openExcelFlg;}public String getExcelApplicationVersion(){ActiveXComponent xl = new ActiveXComponent("Excel.Application");String version = new String( xl.getProperty("Version").toString() );System.out.println("version=" + xl.getProperty("Version")); xl.safeRelease();return version;}}

java判断excel能否正常打开相关推荐

  1. Python判断Excel是否处于打开状态的方法

    Python判断Excel是否处于打开状态的方法 原理 Excel在打开的时候,会产生前缀是~$的临时文件.只要判断该临时文件是否存在即可. import osdef check_excel_is_o ...

  2. mfc 如何判断excel软件是否打开_教你windows如何关闭假死窗口,了解自己使用的电脑。...

    在我们使用电脑的时候会经常出现电脑卡机啊不好用啊等等情况,可是自己却不知道电脑为什么会那么慢,如何让电脑快些呢?先来介绍下电脑快慢是怎么回事.在电脑硬件都正常的情况下如果电脑慢会有以下几种情况: 1. ...

  3. Java判断Excel中,空单元格和空行

    1 判断单个单元格为空 //判断单个单元格是否为空 public static boolean isEmptyCell(Cell cell){if(cell==null||cell.getCellTy ...

  4. mfc 如何判断excel软件是否打开_如何从无到有地搭建一套完整的测试系统(上)...

    本文说明讨论了气体传感器的半导体制造商如何采用聚焦于测试的解决方案,该解决方案能够以较低的成本提供所需的准确度,容纳非常大的站点数量,并与高性能半导体测试系统的总体吞吐性能相匹配. 应用背景 MEMS ...

  5. java判断excel格式_Java 设置Excel数据验证

    import com.spire.xls.*;public classDataValidation {public static voidmain(String[] args) {//创建Workbo ...

  6. Java 常用的工具类—判断Excel版本读取Excel/CSV文件

    以下内容均来自实际项目需求,记录下,网上找的读取Excel会出现不少问题,下面代码是经过好多次测试改进的符合现在项目的代码,如有不同要求,请自行修改,代码均只去掉了包名. 注:我们的Excel 第一行 ...

  7. java导出excel无法打开

    如果你在使用 Java 导出 Excel 文件但是打开后出现了无法打开的问题,可能是出现了以下几种情况: 文件损坏:Excel 文件在生成和传输过程中可能已损坏,导致无法打开. 版本问题:生成的 Ex ...

  8. 判断文件是否损坏_判断Excel文件是否已打开

    判断Excel文件是否已打开的示例,可下载源码. 演  示: 示例下载: 在屏幕左下角的 End推荐阅读Access训练营 从0基础开始,循序渐进,系统化的训练营课程,整合作业.课表.社群,为学员提供 ...

  9. java swing 导出文件_java swing (一) 导出excel文件并打开

    点击XXX管理系统中的"导出Excel"按钮,然后弹出如上图,点击"保存"以后,该Excel就保存到指定路径,并且打开. 上述的动作,其实不难,主要是打开该文件 ...

最新文章

  1. 黑计算机学校给的处分,学校处分通告格式
  2. Orange Business Services中国:如何保证实施最佳安全运营中心
  3. CodeForces:1103(div1)1104(div2)
  4. mysql数据库计算全部女生_使用mysql存储过程-统计某个数据库下的所有表的记录数...
  5. javascript 图表_我如何使用JavaScript数据透视表和图表库分析开发人员趋势
  6. leetcode题解8-盛最多水的容器
  7. 手机鸿蒙OS框架,鸿蒙OS正式“开源”!区别于iOS和安卓,实现了真正的纯国产!...
  8. IPSEC VXN在PPPoE对端配置方案
  9. 9. grouped product
  10. dialogfield
  11. paip.svn不能提交CLEARUP不起作用解决方法
  12. 【应用案例】CANape支持基于模型的ECU开发
  13. python 获取qq群成员信息_Python获取统计自己的qq群成员信息的方法
  14. 计算机视觉的测试数据集,自动驾驶数据集整理
  15. Android生成签名文件对应用签名 Android签名作用
  16. python中for语法
  17. Idea编译提示Java找不到符号解决方式
  18. 小波变换复习 (Review on Wavelet Transform)
  19. The Minimum Spanning Tree Problem
  20. Https的握手过程

热门文章

  1. scribe日志收集
  2. 非常好的介绍流形假设文章
  3. OpenGL着色器语言GLSL语法总结
  4. php37 改性,原子层沉积改性掺杂颗粒的PEO基固态电解质的研究
  5. master.HMaster: Failed to become active master
  6. html如何添加本地视频播放,怎样在网站上添加视频?-MetInfo帮助中心
  7. 读取所有的AppSettings的值
  8. AppInfoPro 获取手机应用信息
  9. java计算机毕业设计基于安卓Android/微信小程序的校园跑腿代购 uni-app
  10. 中国开源创新启示录!