不是标准execl转换处理方法
不是标准execl的主要原因就是原本的html、xml、txt尾椎的文件,更改成了xls尾椎的文件
面对这种问题,最开始我用了jawin.jar,但是始终会报错,NoClassDefFoundError,网上找了很长时间,才知道仅仅支持win32...
好吧,再找
终于,找到了一个jacob.jar
亲测,这个可以把文件转换成你想要的文件,但是有一个缺点,解压后,要把jacob-1.18.dll放到运行的jdk(或jre)的bin里面,这样才能运行
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant; public class JacobUtil {
/*
https://technet.microsoft.com/zh-tw/library/bb241279(v=office.12).aspx
查看对应value
*/
/**
*
* @param file1 G:/file1.xls
* @param file2 G:/file2.xls(或G:/file2.xml或G:/file2.html)
* @param type 转换类型
*/
public static void changeFile(String file1,String file2,int type){
// 初始化
ComThread.InitSTA();
ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动Excel
try {
app.setProperty("Visible", new Variant(false));
Dispatch excels = app.getProperty("Workbooks").toDispatch();
Dispatch excel = Dispatch.invoke(excels,"Open",Dispatch.Method,
new Object[] { file1, new Variant(false),new Variant(true) }, new int[1]).toDispatch();
Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {file2, new Variant(type) }, new int[1]);
Variant f = new Variant(false);
Dispatch.call(excel, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
ComThread.Release();
}
}
public static void excelToExecl(String xlsfile, String xmlfile) {
changeFile(xlsfile,xmlfile,56);
} }
这个方法仅仅是为了读取execl,将文件转换成自己输入的文件
比如一个execl.html尾椎改成了execl.xls,文件不是一个标准的execl,poi不能解析,所以我把这个文件通过jacob转换成标准的xls
这些是转换的类型
| NAME | Value | Description |
|---|---|---|
| xlAddIn | 18 | Microsoft Excel 97-2003 Add-In |
| xlAddIn8 | 18 | Microsoft Excel 97-2003 Add-In |
| xlCSV | 6 | CSV |
| xlCSVMac | 22 | Macintosh CSV |
| xlCSVMSDOS | 24 | MSDOS CSV |
| xlCSVWindows | 23 | Windows CSV |
| xlCurrentPlatformText | -4158 | Current Platform Text |
| xlDBF2 | 7 | DBF2 |
| xlDBF3 | 8 | DBF3 |
| xlDBF4 | 11 | DBF4 |
| xlDIF | 9 | DIF |
| xlExcel12 | 50 | Excel12 |
| xlExcel2 | 16 | Excel2 |
| xlExcel2FarEast | 27 | Excel2 FarEast |
| xlExcel3 | 29 | Excel3 |
| xlExcel4 | 33 | Excel4 |
| xlExcel4Workbook | 35 | Excel4 Workbook |
| xlExcel5 | 39 | Excel5 |
| xlExcel7 | 39 | Excel7 |
| xlExcel8 | 56 | Excel8 |
| xlExcel9795 | 43 | Excel9795 |
| xlHtml | 44 | HTML format |
| xlIntlAddIn | 26 | International Add-In |
| xlIntlMacro | 25 | International Macro |
| xlOpenDocumentSpreadsheet | 60 | OpenDocument Spreadsheet |
| xlOpenXMLAddIn | 55 | Open XML Add-In |
| xlOpenXMLTemplate | 54 | Open XML Template |
| xlOpenXMLTemplateMacroEnabled | 53 | Open XML Template Macro Enabled |
| xlOpenXMLWorkbook | 51 | Open XML Workbook |
| xlOpenXMLWorkbookMacroEnabled | 52 | Open XML Workbook Macro Enabled |
| xlSYLK | 2 | SYLK |
| xlTemplate | 17 | Template |
| xlTemplate8 | 17 | Template 8 |
| xlTextMac | 19 | Macintosh Text |
| xlTextMSDOS | 21 | MSDOS Text |
| xlTextPrinter | 36 | Printer Text |
| xlTextWindows | 20 | Windows Text |
| xlUnicodeText | 42 | Unicode Text |
| xlWebArchive | 45 | Web Archive |
| xlWJ2WD1 | 14 | WJ2WD1 |
| xlWJ3 | 40 | WJ3 |
| xlWJ3FJ3 | 41 | WJ3FJ3 |
| xlWK1 | 5 | WK1 |
| xlWK1ALL | 31 | WK1ALL |
| xlWK1FMT | 30 | WK1FMT |
| xlWK3 | 15 | WK3 |
| xlWK3FM3 | 32 | WK3FM3 |
| xlWK4 | 38 | WK4 |
| xlWKS | 4 | Worksheet |
| xlWorkbookDefault | 51 | Workbook default |
| xlWorkbookNormal | -4143 | Workbook normal |
| xlWorks2FarEast | 28 | Works2 FarEast |
| xlWQ1 | 34 | WQ1 |
| xlXMLSpreadsheet | 46 | XML Spreadsheet |
不是标准execl转换处理方法的更多相关文章
- 托管和非托管转换新方法:Marshaling Library(zz) 【转】
托管和非托管转换新方法:Marshaling Library(zz) 托管和非托管转换新方法:Marshaling Library(zz) http://hi.baidu.com/superql/bl ...
- 【转】在Python的struct模块中进行数据格式转换的方法
这篇文章主要介绍了在Python的struct模块中进行数据格式转换的方法,文中还给出了C语言和Python语言的数据类型比较,需要的朋友可以参考下 Python是一门非常简洁的语言,对于数据类型的表 ...
- 微信录音文件上传到服务器以及amr转化成MP3格式,linux上转换简单方法
微信公众号音频接口开发 根据业务需求,我们可能需要将微信录音保存到服务器,而通过微信上传语音接口上传到微信服务器的语音文件的有效期只有3天,所以需要将文件下载到我们自己的服务器. 上传语音接口 wx. ...
- C#中二进制、十进制和十六进制互相转换的方法
二进制在C#中无法直接表示,我们一般用0和1的字符串来表示一个数的二进制形式.比如4的二进制为"100".下面介绍C#里面用于进制转换的方法. 十进制转换为二进制(int--> ...
- jquery对象与dom对象之间互相转换的方法
本文主要讲述jquery对象和js里的dom对象之间互相转换的方法,使jquery对象可以直接使用js里的方法,或js里的dom对象使用jquery里的方法. jquery对象和dom对象是不一样的, ...
- 【ABAP系列】SAP ABAP 行列转换的方法
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 行列转换的方法 ...
- JQuery $ $.extend(),$.fn和$.fn.extend javaScript对象、DOM对象和jQuery对象及转换 工具方法(utility)
一.为什么jquery前面要写$ Javascript没有package的概念,而作者又希望所有jQuery相关的API都能通过一个全局性的对象来容纳. 名为jQuery的全局变量就是这样一个对象,不 ...
- TTL和COMS电平匹配以及电平转换的方法
一.TTL TTL集成电路的主要型式为晶体管-晶体管逻辑门(transistor-transistor logic gate),TTL大部分都采用5V电源.1.输出高电平Uoh和输出低电平UolUoh ...
- 使用js进行string和json之间转换的方法
在数据传输过种中,json是以文本,即字符串的形式传递,字符串形似Json对象: var str1 = '{ "name": "Amy", "sex& ...
随机推荐
- UNIX网络编程——关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
1.阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有 区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,特别:返回 ...
- android6.0SDK 删除HttpClient的相关类的解决方法
本文转载自博客:http://blog.csdn.net/yangqingqo/article/details/48214865 android6.0SDK中删除HttpClient的相关类的解决方法 ...
- lk中内联调用的dsb()
lk中内联调用的dsb() 比如lk的uart_dm_init()函数就调用了dsb() /* Configure the uart clock */ clock_config_uart_dm(id) ...
- pig中查询top k,返回每个hour和ad_network_id下最大两个记录(SUBSTRING,order,COUNT_STAR,limit)
pig里面是有TOP函数,不知道为什么用不了.有时间要去看看pig源码了. SET job.name 'top_k'; SET job.priority HIGH; --REGISTER piggyb ...
- Ubuntu14.04安装配置Chrome浏览器
1.获取软件 32位版本: wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb 64位版本: w ...
- golang:高性能消息队列moonmq的简单使用
在上一篇moonmq的介绍中(这里),我仅仅简短的罗列了一些moonmq的设计想法,但是对于如何使用并没有详细说明,公司同事无法很好的使用. 对于moonmq的使用,其实很简单,样例代码在这里,我们只 ...
- javascript综合小案例,校验用户注册信息提交
完成这个综合小案例,对于html.css.javascript的大部分内容复习快结束了. 这里做一个小案例--要实现的功能,以一张图片的形式给出: 首先,写出提交数据之后进入的页面代码: <!D ...
- Touch Handling in Cocos2D 3.x(六)
使英雄变成可触碰的对象 这是另一个非常有用的特性.很多用户需要捡起已经存在的英雄然后满屏幕移动它们.让我们按以下步骤实现该功能: 如果用户触摸屏幕空白位置,一个新的英雄将被创建 如果用户触摸一个已经存 ...
- 认证模式之Form模式
上面介绍的两种模式都属于HTTP协议规范范畴,由于它的规范使得很多东西无法自定义,例如登录窗口.错误展示页面.所以需要另外一种模式提供更加灵活的认证,也就是基于Form的认证模式. Form模式的认证 ...
- 解决bootstrap row span设置border换行的问题
Hadoop方面的毕业设计告一段落了,趁这几天空闲时间认真学习一下之前常使用但是却没用好的Bootstrap. 本文记录Bootstrap框架使用栅格系统时,遇到row内的span设置border换行 ...