JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。
JXL下载地址:
http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.6/jexcelapi_2_6_6.zip/download
各版本下载地址:http://sourceforge.net/projects/jexcelapi/files/
通过引入JXL.jar库后可以很方便地对xls或者xlsx文件进行读写操作,下面简要示例对xls文件的读取:
try {
String fileName = "yourPath/datas.xls";
File file = new File(fileName);
// 设置读文件编码
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("GB2312");
// 从文件流中获取Excel工作区对象(WorkBook)
Workbook wb = Workbook.getWorkbook(file,setEncode);
// 从工作区中取得页(Sheet),默认单独一页,第一页
Sheet sheet = wb.getSheet(0);
// 测试:循环打印Excel表中的内容
for (int i = 0; i < 50; i++) {
for (int j = 0; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i);
System.out.print(cell.getContents());
}
System.out.println();
}
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这样便可以挨个取出xls文件中每个单元格内的具体内容。
但是xls文件并不如csv的逗号文件应用方便和广泛,因此本文顺便示例如何将xls文件转化为csv文件。
其实只需要挨个将xls文件的单元格数据读取出来以后,加上英文逗号,追加到StringBuffer中即可,待完成所有数据的读取,最后将buffer写入到文件中。
但是有一个小小的陷阱需要注意:那就是在xls文件中,某个单元格内的内容有可能存在换行问题,因此需要置换每行的数据(除了每行的结束)以外所有换行符”\n”,不然生成的csv是无法使用的,简单示例代码如下:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;
public class dealExcels {
public static void main(String[] args) {
String buffer = "";
try {
String fileName = "yourPath/datas.xls";
File file = new File(fileName);
// 设置读文件编码
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("GB2312");
// 从文件流中获取Excel工作区对象(WorkBook)
Workbook wb = Workbook.getWorkbook(file,setEncode);
Sheet sheet = wb.getSheet(0);
for (int i = 0; i < sheet.getRows(); i++) {
for (int j = 0; j < 11; j++) {
Cell cell = sheet.getCell(j, i);
buffer += cell.getContents().replaceAll("\n", " ")+",";
}
buffer = buffer.substring(0, buffer.lastIndexOf(",")).toString();
buffer += "\n";
}
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//write the string into the file
String savePath = "yourPath/datas.csv";
File saveCSV = new File(savePath);
try {
if(!saveCSV.exists())
saveCSV.createNewFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(saveCSV));
writer.write(buffer);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
xls文件转csv文件就是将所有内容进行拼接,需要注意的就是 编码 问题 和 单个单元格内的 换行符。