JAVA读取word,excel内容
上次介绍了用java读取rtf文件格式的内容,那用java语言怎么来读取word文档以及excel中的内容,这些在编程的时候是经常会用到的,java读取word文档及Excel的内容在java的API中没有是没有现成的类或方法的,所以我们要用到一个控件——POI控件:POI控件的下载及配置
下面就是关于java读取word和Excel内容的代码: 阅读全文…
上次介绍了用java读取rtf文件格式的内容,那用java语言怎么来读取word文档以及excel中的内容,这些在编程的时候是经常会用到的,java读取word文档及Excel的内容在java的API中没有是没有现成的类或方法的,所以我们要用到一个控件——POI控件:POI控件的下载及配置
下面就是关于java读取word和Excel内容的代码: 阅读全文…
摘抄自:http://lycoder.javaeye.com/blog/451613
里面介绍得很好,POI的下载及配置,PDFBOX的下载及配置,JDOM的下载及配置都全了。
一、POI
POI是Apache的Jakata项目,POI 代表 Poor Obfuscation Implementation,即不良模糊化实现。POI 的目标就是提供一组 Java API 来使得基于 Microsoft OLE 2 Compound Document 格式的 Microsoft Office 文件易于操作。
下载地址 :http://apache.etoak.com/poi/release/bin/
相关配置 : 阅读全文…
java中读取rtf文件格式的内容有事在项目中用到,java API中有相关的类和方法用来读取rtf文件格式的内容,这样利用相关的类和方法就能获取到我们需要的内容,不需要什么插件了呵呵,下面是代码,特记录下:
package textReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.rtf.RTFEditorKit;
public class RtfReader {
public RtfReader(){
}
/**
* @param filePath 文件路径
* @return 读出的rtf的内容
*/
public String getTextFromRtf(String filePath) {
String result = null;
File file = new File(filePath);
RTFEditorKit rtf = new RTFEditorKit().
try {
DefaultStyledDocument styledDoc = new DefaultStyledDocument();
InputStream is = new FileInputStream(file);
rtf.read(is, styledDoc, 0);
result = new String(styledDoc.getText(0,styledDoc.getLength()).getBytes("ISO8859_1"));
//提取文本,读取中文需要使用ISO8859_1编码,否则会出现乱码
} catch (IOException e) {
e.printStackTrace();
} catch (BadLocationException e) {
e.printStackTrace();
}
return result;
}
}
在用cookie保存用户名的时候,发现cookie值不能存中文,报如下错:
Control character in cookie value, consider BASE64 encoding your value
错误发生在:response.addCookie(cookie);
在以前的编程中也碰到过这样的问题,主要是cookie值里面存在非法参数,如存在”\r\n”、”\n”之类的字符时就报报这样的错,但我就个用户名啊,不存在像这些字符啊,不管,我把cookie值设为一个默认的中文用户名,运行看是否出问题,果不其然,出现同样的错误,结果知道,cookie中不能保存中文。
最后想想把中文转换为UTF-8字符串进行保存应该没问题,即用 URLEncoder.encode(“中文用户名”,”UTF-8″)); 这样把中文用户名转换为UTF-8字符串,运行时通过。在最后接收这个值的时候,用URLDecoder.decode(cookies.getValue(),”UTF-8″);来解码得到我要的中文用户名。
URLEncode及URLDecode在包java.net里面。
在做spring AOP的时候,如果没导入相关的包 就会报这个错,下面是:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor的解决方法
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
Hibernate使用如下lib:
asm.jar
asm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。
解决办法是:
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar
现在把这几个需要的包提供下载地址:spring_AOP
1、下载绿色版svn(即zip压缩包文件,如我下的是svn-win32-1.5.6.zip,当然下安装版的也可以): http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&expandFolder=91&folderID=74 ,一般选择最新版本。同时也可以下载svn的windows客户端TortoiseSVN http://tortoisesvn.net/downloads
2、解压下载下来的绿色版svn和安装svn的windows客户端TortoiseSVN,按照提示安装就可以,为了能立马看到效果,最好重启下机器,呵呵
3、创建版本库,打开命令窗口(开始->运行,键入cmd,回车),我的svn服务器解压目录为F:\svn;在命令窗口输入:
pushd F:\svn\bin
进入到svn解压目录下的bin目录,建立版本库,如我把版本库安装在:F:\svnrep,首先确认F盘下是否存在svnrep文件夹,没有我们可以在命令窗口键入:
mkdir F:\svnrep
就会创建一个snvrep文件夹,接下来,运行如下命令:
svnadmin create F:\svnrep
这样我们的版本库就创建了,在F:\svnrep下你可以看到自动生成了一些文件及文件夹;同时,你也可以用TortoiseSVN的图形界面来创建,在F:\svnrep文件夹中”右击->TortoiseSVN->Create Repository here”, 同样得到我们需要的结果,如果这文件夹已经创建有了,你再创建,会自动报错。
忘记了从那篇网文拷贝过来的,这里的js对cookie的写入,读取及删除方法,都很实用,呵呵,宣传下…
/*
name:cookie 名
value:cookie 值
*/
//写入cookie
function SetCookie(name,value)
{
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
///删除cookie
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//读取cookie
function getCookie(name)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null)
return unescape(arr[2]);
return null;
}
转自:http://blog.chinaunix.net/u/26654/showart_363328.html
DB2中所谓的数据移动,包括:
1. 数据的导入(Import)
2. 数据的导出(Export)
3. 数据的装入(Load)
导入和装入都是利用DB2的相关命令把某种格式的文件中的数据保存到数据库中的表中
导出是指把DB2数据库的表中的数据保存到某种格式的文件当中去
数据移动的作用:
如果要在不同的数据库管理系统之间转移数据,数据移动通常是最实用的一种方法,因为任何一种数据库管理系统都支持常用的几种文件格式,通过这个通用的接口,就很容易实现不同系统间数据的转移。
这三个命令中,Export最简单,因为从表中向文件转移数据,通常不会出现错误,也不会有非法的数据。 阅读全文…
因为一个面试题,我今天测试了下,居然我写的答案是错的,下面是大概意思的源程序:
var a = 100;
function showout(){
var fullrange = 2 * a;
var a = 200;
var halfrange = a / 2;
alert(fullrange);
alert(halfrange);
}
开始我想的是既然在function里面定义了局部变量 a ,那function外定义的全局变量在function里面是不会起作用的,所以fullrange和halfrange的值应该分别是:400和100。因为当时是笔试,而不是上机(上机也不会出现这问题,呵呵),所以得出这个答案,面试老师看了之后回答是正确结果,我放心了。
但面试还是有几道题没有做出来,回家仔细的想了下,包括这道题,我在电脑上一测试,俺的天,得到fullrange的值居然是NaN,大呼怎么可能…. 于是我反复测试,如果我把function里面定义的:var a = 200;改为:a = 200;那么得出fullrange和halfrange的值的答案分别是:200和100,想了下其实如果我这里这样改的话,那么function里面的a就不是局部变量了,而是全局变量a,改变了全局变量a的值而已,所以得到值也就200和100了。那我就纳闷了,为什么定义了局部变量,而得不到fullrange的值呢,而且是个NaN,说明var fullrange = 2 * a;中a是没有定义的即typeof a为undefined。那么这也只能说明,在JavaScript中的function里面是严格按照顺序执行的,在function里面如果定义了与全局变量名称相同的局部变量,那么function里面引用到这个变量的都以局部变量来处理,用 this.变量名字 或 window.变量名字 才能引用function外部与变量名字相同的全局变量。
这里的全局变量和局部变量搞的很头晕了,我个人认为是:
在JavaScript执行代码之前,先处理变量声明,不管这个变量在什么位置,如果在function中变量显示声明,即变量在赋值语句中出现在左边,但没有用var声明,则把这个变量看成时全局变量。在function中,如果存在着用var声明的局部变量的名称与全局变量的名称相同,那么function中引用这个变量值的时候在应为局部变量的值,除非用this或window来修饰这个变量,才能取到全局变量的值。
在有的时候,我们需要把某些十进制数字,或则字母转换成二进制,或八进制,或十六进制,在JavaScript中,像这种进制很容易转换,如:
十进制转换成其他进制:
var num = 10; document.write(m.toString(2) + "<br>"); // 显示为 1010 document.write(m.toString(8) + "<br>"); // 显示为 12 document.write(m.toString(10) + "<br>"); // 显示为 10 document.write(m.toString(16) + "<br>"); // 显示为 a,注意是小写。
其他进制转换成十进制:
parseInt(numstring, [radix])
document.write(parseInt(1010, 2) + "<br>"); // 显示为 10 document.write(parseInt(12,+ "<br>"); // 显示为 10 document.write(parseInt(10, 10) + "<br>"); // 显示为 10 document.write(parseInt("a", 16) + "<br>"); // 显示为 10 document.write(parseInt("A", 16) + "<br>"); // 显示为 10
Recent Comments