用JAVA 读写 EXCEL,在网上查看,很多人会用 POI 方式,个人试用结果,感觉并不是那么好用。
其实还有一个组件,jxl ,用 jxl 也可以很方便的完成 excel 文档的读写操作。
jxl 的下载地址: http://www.andykhan.com/jexcelapi/index.html
将下载的JAR 包添加到工程的path中。然后就可以写测试程序了
1. 生成一个excel文档
2. 读取excel文档内容
3. 更新excel文档内容
各自源代码如下:
java jxl 生成EXCEL文档:import java.io.*;
import jxl.*;
import jxl.write.*;
public class CreateXLS {
public static void main(String args[]) {
try {
// 打开文件
WritableWorkbook book = Workbook.createWorkbook(new File("测试.xls"));
System.out.print("生成文挡: ---测试.xls");
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet = book.createSheet("第一页", 0);
// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
// 以及单元格内容为test
Label label = new Label(0, 0, "test");
// 将定义好的单元格添加到工作表中
sheet.addCell(label);
/*
* 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
*/
jxl.write.Number number = new jxl.write.Number(1, 0, 789.123);
sheet.addCell(number);
// 写入数据并关闭文件
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
java jxl 更新Excel 文档
import java.io.*;
import jxl.*;
import jxl.read.biff.BiffException;
import jxl.write.*;
public class UpdateXLS {
public static void write()throws Exception{
WritableWorkbook wwb=Workbook.createWorkbook(new File("c:/1.xls"));
WritableSheet ws=wwb.createSheet("Test Sheet 1",0);
File file=new File("C:\\jbproject\\PVS\\WebRoot\\weekhit\\1109496996281.png");
WritableImage image=new WritableImage(1, 4, 6, 18,file);
ws.addImage(image);
wwb.write();
wwb.close();
}
public static void main(String args[]) throws BiffException, IOException {
try {
// Excel获得文件
Workbook wb = Workbook.getWorkbook(new File("测试.xls"));
// 打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book = Workbook.createWorkbook(new File("测试.xls"),
wb);
// 添加一个工作表
WritableSheet sheet = book.createSheet("第二页", 1);
sheet.addCell(new Label(0, 0, "第二页的测试数据"));
book.write();
book.close();
System.out.print("数据已更新!");
WritableFont font1= new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD);
//设置字体格式为excel支持的格式
WritableFont font3=new WritableFont(WritableFont.createFont("楷体_GB2312"),12,WritableFont.NO_BOLD );
WritableCellFormat format1=new WritableCellFormat(font1);
Label label=new Label(0,0,"data 4 test",format1);
// ①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的构造子,供不同情况下使用,
// jExcelAPI的java-doc中有详细列表,这里不再列出。
// ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述。
// ③处使用了Label类的构造子,指定了字串被赋予那种格式。 在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐
// 方式,比如针对我们上面的实例,可以指定:
//把水平对齐方式指定为居中
format1.setAlignment(jxl.format.Alignment.CENTRE);
//把垂直对齐方式指定为居中
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
//设置自动换行
format1.setWrap(true);
} catch (Exception e) {
System.out.println(e);
}
String path="c:\\excel.xls";//Excel文件URL
InputStream is = new FileInputStream(path);//写入到FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); //得到工作薄
jxl.Sheet st = wb.getSheet(0);//得到工作薄中的第一个工作表
Cell cell=st.getCell(0,0);//得到工作表的第一个单元格,即A1
String content=cell.getContents();//getContents()将Cell中的字符转为字符串
wb.close();//关闭工作薄
is.close();//关闭输入流
}
}
java jxl 读取 excel
import java.io.*;
import jxl.*;
public class ReadXLS {
public static void main(String args[]) {
try {
Workbook book = Workbook.getWorkbook(new File("测试.xls"));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
// 得到第一列第一行的单元格
Cell cell1 = sheet.getCell(0, 0);
String result = cell1.getContents();
System.out.println(result);
Cell cell2= sheet.getCell(1, 0);
String result1= cell2.getContents();
System.out.println(result1);
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
}