package com.ksoft.controller.util;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ReadeCsvUtil {
private BufferedReader br = null;
private List<String> list = new ArrayList<String>();
public ReadeCsvUtil() {
}
/**
* 创建一个csv文件的工具类
* @param filePath 文件路径
* @throws Exception
*/
public ReadeCsvUtil(String filePath) throws Exception {
br = new BufferedReader(new FileReader(filePath));
String stemp;
while ((stemp = br.readLine()) != null) {
list.add(stemp);
}
this.CsvClose();
}
/**
* 创建一个csv文件的工具类
* @param inputStream 数据流
* @throws Exception
*/
public ReadeCsvUtil(InputStream inputStream)throws Exception{
br = new BufferedReader(new InputStreamReader(inputStream));
String stemp;
while ((stemp = br.readLine()) != null) {
list.add(stemp);
}
inputStream.close();
this.CsvClose();
}
public List<String> getList() {
return list;
}
/**
* 获取行数
* @return
*/
public int getRowNum() {
return list.size();
}
/**
* 获取列数
* @return
*/
public int getColNum() {
if (!list.toString().equals("[]")) {
if (list.get(0).toString().contains(",")) {// csv为逗号分隔文件
return list.get(0).toString().split(",").length;
} else if (list.get(0).toString().trim().length() != 0) {
return 1;
} else {
return 0;
}
} else {
return 0;
}
}
/**
* 获取指定行
* @param index
* @return
*/
public String getRow(int index) {
if (this.list.size() != 0) {
return (String) list.get(index);
} else {
return null;
}
}
/**
* 获取指定列
* @param index
* @return
*/
public String getCol(int index) {
if (this.getColNum() == 0) {
return null;
}
StringBuffer sb = new StringBuffer();
String tmp = null;
int colnum = this.getColNum();
if (colnum > 1) {
for (Iterator<String> it = list.iterator(); it.hasNext();) {
tmp = it.next().toString();
sb = sb.append(tmp.split(",")[index] + ",");
}
} else {
for (Iterator<String> it = list.iterator(); it.hasNext();) {
tmp = it.next().toString();
sb = sb.append(tmp + ",");
}
}
String str = new String(sb.toString());
str = str.substring(0, str.length() - 1);
return str;
}
/**
* 获取某个单元格
* @param row
* @param col
* @return
*/
public String getString(int row, int col) {
String temp = null;
int colnum = this.getColNum();
if (colnum > 1) {
temp = list.get(row).toString().split(",")[col];
} else if (colnum == 1) {
temp = list.get(row).toString();
} else {
temp = null;
}
return temp;
}
private void CsvClose() throws Exception {
this.br.close();
}
public static void main(String[] args) throws Exception {
ReadeCsvUtil util = new ReadeCsvUtil("D:\\demo.csv");
int rowNum = util.getRowNum();
int colNum = util.getColNum();
String x = util.getRow(2);
String y = util.getCol(2);
System.out.println("rowNum:" + rowNum);
System.out.println("colNum:" + colNum);
System.out.println("x:" + x);
System.out.println("y:" + y);
for (int i = 1; i < rowNum; i++) {
for (int j = 0; j < colNum; j++) {
System.out.println("result[" + i + "|" + j + "]:" + util.getString(i, j));
}
}
}
}