Exl转换成html的方法

此方法采用了一个插件:jacob-1.15-M4,这个插件可以将office转换成html,在此我只介绍了一种,将Exl转换成html,转换后的html中有的border线为0.5px,在有的浏览器中不识别0.5px的border线,需要将生成的css中的0.5px,转换成1px,在系统中如果需要多次转换的话建议写一个单例模式,否则的话转换几次之后你电脑的内存就被撑爆了,原因很简单,就是每一次转换都会启动一次Exl程序,启动的多了系统内存就沾满了,所以,建议还是写成单例模式,废话不多说,直接贴代码:

插件需要下载的可以点击此处下载:http://download.csdn.net/detail/s592652578/8446163

package com.odon.common.util;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
 
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
 
public classExlToHtm {
 
   //单例模式
   private static ExlToHtm exlToHtm=null;
 
   public static ExlToHtm getExlToHtm(){
      if(exlToHtm==null)
         exlToHtm=new ExlToHtm();
      return exlToHtm;
   }
 
   public static final int EXCEL_HTML = 44; 
   public static final ActiveXComponent app = new ActiveXComponent("Excel.Application");//启动exl
 
   /** 
    * EXCEL转HTML 
    * @param xlsfile EXCEL文件全路径 
    * @param htmlfile转换后HTML存放路径 
    */ 
   public synchronized void  excelToHtml(String xlsfile, Stringhtmlfile){ 
      //    ActiveXComponentapp = new ActiveXComponent("Excel.Application"); //启动exl
      try { 
         app.setProperty("Visible",newVariant(false));  
         Dispatchexcels = app.getProperty("Workbooks").toDispatch();  
         Dispatchexcel = Dispatch.invoke(  
                excels,  
                "Open",  
                Dispatch.Method,  
                new Object[] { xlsfile,new Variant(false),  
                      new Variant(true) },new int[1]).toDispatch();  
         Dispatch.invoke(excel,"SaveAs",Dispatch.Method,newObject[] {  
                htmlfile,newVariant(EXCEL_HTML)},newint[1]);  
         Variantf = newVariant(false);  
         Dispatch.call(excel,"Close",f); 
      }catch (Exception e){  
         e.printStackTrace();  
      }finally{
         app.invoke("Quit",new Variant[] {});
      }  
   }
 
   /**
    * 修改css样式
    * @param filePath
    * @param cssPath
    */
   public static void readCss(StringfilePath,String cssPath) { 
      BufferedReaderbr = null; 
      Stringline = null; 
      StringBufferbuf = newStringBuffer(); 
      Stringcontent = null;
      Filetxt=newFile(cssPath);
      FileOutputStreamfos = null;
      try { 
         fos= newFileOutputStream(txt);
         // 根据文件路径创建缓冲输入流 
         br= newBufferedReader(newFileReader(filePath));
         // 循环读取文件的每一行,对需要修改的行进行修改,放入缓冲对象中 
         while ((line = br.readLine())!=null){ 
            // 此处根据实际需要修改某些行的内容 
            if(line.indexOf(":.5pt")>-1){
                line= line.replace(":.5pt",":1pt");
                line= line + "\r";
            }
            buf.append(line);
         } 
         //判断文件是否存在
         if(!txt.exists()){
            txt.createNewFile();
         }
         content= buf.toString();
         byte bytes[]=newbyte[1024];
         bytes=content.getBytes();   //新加的
         intb=content.length();  //改
         fos.write(bytes,0,b);
      }catch(Exception e) { 
         e.printStackTrace(); 
      }finally{ 
         // 关闭流 
         if (br !=null) { 
            try { 
                br.close(); 
            }catch(IOException e) { 
                br= null; 
            } 
         } 
         if( fos !=null){
            try {
                fos.close();
            }catch(Exception e2) {
                e2.printStackTrace();
            }
         }
      } 
   } 
}


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值