以前各种包都用过,操作了无数csv 和excel。 从来没有记录过。下面写了个简单例子,不过对于excel还是建议使用poi来操作。我没有封装,只是事例而已。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import com.csvreader.CsvReader;
import EmgDzdpMapping;
public class ReaderMappingFile {
/**
* 读csv格式.
* 开源jar包有opencsv, javacsv, csvObjects(可以装换成对象),csv, csvjdbc等. 此处用javacsv
* @param dir
* @return
*/
public static List readCsvFile(String dir) {
List list = new ArrayList();
List files = getFile(dir);
CsvReader reader = null;
ArrayList csvList = new ArrayList(); //用来保存数据
try {
for (File file : files) {
if (!file.getName().contains("csv"))
continue;
reader = new CsvReader(file.getAbsolutePath(),',',Charset.forName("SJIS"));
//一般用这编码读就可以了
reader.readHeaders(); // 跳过表头 如果需要表头的话,不要写这句。
while(reader.readRecord()){ //逐行读入除表头的数据
csvList.add(reader.getValues());
}
reader.close();
for(int row=0;row
for(int colum = 0; colum
System.out.println(csvList.get(row)[colum]);//取得第row行第colum列的数据
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
} finally {
if(reader != null) {
reader.close();
}
}
return null;
}
/**
* 不使用递归,遍历文件夹.速度没有递归效果快
*/
private static List getFile(String rootDir) {
List files = new ArrayList();
LinkedList list = new LinkedList();
File dir = new File(rootDir);
File file[] = dir.listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory()) {
list.add(file[i]);
} else {
// System.out.println(file[i].getAbsolutePath());
files.add(file[i]);
}
}
File tmp;
while (!list.isEmpty()) {
tmp = list.removeFirst();// 循环操作,删除元素。
if (tmp.isDirectory()) {
file = tmp.listFiles();
if (file == null)
continue;
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory()) {
list.add(file[i]);
} else {
// System.out.println(file[i].getAbsolutePath());
files.add(file[i]);
}
}
} else {
// System.out.println(tmp.getAbsolutePath());
files.add(tmp);
}
}
return files;
}
/**
* jxl读excel格式.
* poi, jxl, jxls等。
* jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式
* @param dir
* @return
*/
public static List readExcelFile(String dir) {
Workbook book = null;
List files = getFile(dir);
try {
for (File file : files) {
if (!file.getName().contains("xls"))
continue;
book = Workbook.getWorkbook(file);
// 获得第一个工作表对象,暂时只处理一个sheet.
Sheet sheet = book.getSheet(0);
int columnum = sheet.getColumns(); // 得到列数
int rownum = sheet.getRows(); // 得到行数
System.out.println(columnum);
System.out.println(rownum);
for (int i = 0; i < rownum; i++) // 循环进行读写
{
for (int j = 0; j < columnum; j++) {
Cell cell1 = sheet.getCell(j, i);
String result = cell1.getContents();
System.out.print(result);
System.out.print(" \t ");
}
System.out.println();
}
}
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (book != null) {
book.close();
}
}
return null;
}
public static void main(String[] args) {
readCsvFile("F:\\11_maintenance\\问题\\20120104_02\\test");
//readExcelFile("F:\\11_maintenance\\问题\\20120104_02\\test");
// System.out.println(getFile("F:\\11_maintenance\\问题\\20120104_02\\dfyl111230").size());;
}
}
public class EmgDzdpMapping {
public String richpoisrc;
public Stringrichpoiid;
public String emgpoiid;
public String emgversion;
public String update;
/**A:代表add新增*/
public String deltatyp;
public EmgDzdpMapping(String richpoisrc, String richpoiid, String emgpoiid,
String emgversion, String update, String deltatyp) {
super();
this.richpoisrc = richpoisrc;
this.richpoiid = richpoiid;
this.emgpoiid = emgpoiid;
this.emgversion = emgversion;
this.update = update;
this.deltatyp = deltatyp;
}
public String getRichpoisrc() {
return richpoisrc;
}
public void setRichpoisrc(String richpoisrc) {
this.richpoisrc = richpoisrc;
}
public String getRichpoiid() {
return richpoiid;
}
public void setRichpoiid(String richpoiid) {
this.richpoiid = richpoiid;
}
public String getEmgpoiid() {
return emgpoiid;
}
public void setEmgpoiid(String emgpoiid) {
this.emgpoiid = emgpoiid;
}
public String getEmgversion() {
return emgversion;
}
public void setEmgversion(String emgversion) {
this.emgversion = emgversion;
}
public String getUpdate() {
return update;
}
public void setUpdate(String update) {
this.update = update;
}
public String getDeltatyp() {
return deltatyp;
}
public void setDeltatyp(String deltatyp) {
this.deltatyp = deltatyp;
}
}