csv读取java
① 将csv中信息存取到java中的map
首先要有个实体类(javabean)放一个用户的信息:
class User {
public String userId;
public String userName;
public String age;
public String sex;
public String gtmCreated;
public String gtmModify;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getGtmCreated() {
return gtmCreated;
}
public void setGtmCreated(String gtmCreated) {
this.gtmCreated = gtmCreated;
}
public String getGtmModify() {
return gtmModify;
}
public void setGtmModify(String gtmModify) {
this.gtmModify = gtmModify;
}
}
具体实现:
public static void readCsvFile() throws IOException {
Map<String, User> manHs = new HashMap<String, User>();
Map<String, User> womanHs = new HashMap<String, User>();
File csvFile = new File("F:"+File.separator+"testSource"+File.separator+"csv.csv");
FileReader fr = new FileReader(csvFile);
BufferedReader br = new BufferedReader(fr);
String lineStr = null ;
int indexman = 0;
int indexwoman = 0;
while((lineStr = br.readLine()) != null) {
User user = new User();
String[] arr= lineStr.split(",");
user.setUserId(arr[0]);
user.setUserName(arr[1]);
user.setAge(arr[2]);
user.setSex(arr[3]);
user.setGtmCreated(arr[4]);
user.setGtmModify(arr[5]);
if(arr[2].equals("男")) {
manHs.put("man"+indexman, user);
indexman++;
}else {
womanHs.put("woman"+indexwoman, user);
indexwoman++;
}
}
for(Entry<String, User> entry : manHs.entrySet()) {
out.println(entry.getKey() + "\t" + entry.getValue().getUserName());
}
for(Entry<String, User> entry : womanHs.entrySet()) {
out.println(entry.getKey() + "\t" + entry.getValue().getUserName());
}
}
在main方法中直接调用
② 如何使用eclipse编写java程序读取csv文件中
package ImportTestData;
import java.io.BufferedReader;
import java.io.FileReader;
public class Test {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("a.csv"));//换成你的文件名
reader.readLine();//第一行信息,为标题信息,不用,如果需要,注释掉
String line = null;
while((line=reader.readLine())!=null){
String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分
String last = item[item.length-1];//这就是你要的数据了
//int value = Integer.parseInt(last);//如果是数值,可以转化为数值
System.out.println(last);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
③ java 怎么获取csv文件内容
前几天刚做了一个 对文本文件分析编码方式以便正确转码
CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
detector.add(UnicodeDetector.getInstance());
detector.add(JChardetFacade.getInstance());
detector.add(ASCIIDetector.getInstance());
File f = new File(url);
Charset charset = detector.detectCodepage(f.toURI().toURL());
//判断是否是UTF-8编码的文件
if("UTF-8".equals(charset.toString())){
br = new BufferedReader(new InputStreamReader(new FileInputStream(url),"UTF-8"));
} else {
br = new BufferedReader(new InputStreamReader(new FileInputStream(url),"GBK"));
}
可以判断的编码有不少 楼主可以输出试试看
cpdetector_1.0.10和 chardet (jchardet-1.1)这个是依赖jar包
④ java读取CSV文件
可以通过流的形式读取到所有内容,之后在转换成元素的形式进行实现。举例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;
public class Test{
public static void main(String[] args) {
Hashtable<String, String[]> dict = new Hashtable<String, String[]>();
try {
BufferedReader reader = new BufferedReader(new FileReader("test.csv"));
String line = null;
while((line=reader.readLine())!=null){
String item[] = line.split(",");
String item2[] = new String[19];
System.array(item,1,item2,0,19);
dict.put(item[0],item2);
}
Enumeration e2 = dict.keys();
while (e2.hasMoreElements()) {
String key = (String) e2.nextElement();
System.out.println(key);
String[] dd = (String[])dict.get(key);
for (int i=0;i<dd.length;i++) {
System.out.print(dd[i]+"\t");
}
System.out.println();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
⑤ java 读取csv文件里指定行列的值,比如读取第三行第二列的值。
import java.io.BufferedReader;
import java.io.FileReader;
public class Test {
public void test(int row,int col){
try {
BufferedReader reader = new BufferedReader(new FileReader("C:\a.csv"));//换成你的文件名
// reader.readLine();//第一行信息,为标题信息,不用,如果需要,注释掉
String line = null;
int index=0;
while((line=reader.readLine())!=null){
String item[] = line.split(" ");//CSV格式文件为逗号分隔符文件,这里根据逗号切分
if(index==row-1){
if(item.length>=col-1){
String last = item[col-1];//这就是你要的数据了
System.out.println(last);
}
}
//int value = Integer.parseInt(last);//如果是数值,可以转化为数值
index++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
test.test(3, 2);
}
}
你的数据格式有问题,空格的个数不确定,没办法每行用空格分隔。以下是我调整后的数据格式每行的数据以一个空格分隔,test方法传入的参数一次是,行,列:
1电机1
2WBS2
3PID3
4CP
5社供出
6原価実绩
7社供WC
8外注费
9直材费
10自家制品
11直経费
12その他
13注残
14注残
⑥ java怎么读取csv每列的数据
读csv跟读txt文件没区别,都是以流的方式读入,取每列数据要把整个文件都读进来,然后取每行的相应列加到List里。
⑦ 如何读取csv一行中的单个数据java
packagecom.han.csv.util;
importjava.io.BufferedReader;
importjava.io.FileInputStream;
importjava.io.InputStreamReader;
importjava.util.ArrayList;
publicclassCSVFileUtil{
//CSV文件编码
publicstaticfinalStringENCODE="UTF-8";
privateFileInputStreamfis=null;
privateInputStreamReaderisw=null;
privateBufferedReaderbr=null;
publicCSVFileUtil(Stringfilename)throwsException{
fis=newFileInputStream(filename);
isw=newInputStreamReader(fis,ENCODE);
br=newBufferedReader(isw);
}
//==========以下是公开方法=============================
/**
*从CSV文件流中读取一个CSV行。
*
*@throwsException
*/
publicStringreadLine()throwsException{
StringBufferreadLine=newStringBuffer();
booleanbReadNext=true;
while(bReadNext){
//
if(readLine.length()>0){
readLine.append(" ");
}
//一行
StringstrReadLine=br.readLine();
//readLineisNull
if(strReadLine==null){
returnnull;
}
readLine.append(strReadLine);
//如果双引号是奇数的时候继续读取。考虑有换行的是情况。
if(countChar(readLine.toString(),'"',0)%2==1){
bReadNext=true;
}else{
bReadNext=false;
}
}
returnreadLine.toString();
}
/**
*把CSV文件的一行转换成字符串数组。指定数组长度,不够长度的部分设置为null。
*/
publicstaticString[]fromCSVLine(Stringsource,intsize){
ArrayListtmpArray=fromCSVLinetoArray(source);
if(size<tmpArray.size()){
size=tmpArray.size();
}
String[]rtnArray=newString[size];
tmpArray.toArray(rtnArray);
returnrtnArray;
}
/**
*把CSV文件的一行转换成字符串数组。不指定数组长度。
*/
(Stringsource){
if(source==null||source.length()==0){
returnnewArrayList();
}
intcurrentPosition=0;
intmaxPosition=source.length();
intnextComma=0;
ArrayListrtnArray=newArrayList();
while(currentPosition<maxPosition){
nextComma=nextComma(source,currentPosition);
rtnArray.add(nextToken(source,currentPosition,nextComma));
currentPosition=nextComma+1;
if(currentPosition==maxPosition){
rtnArray.add("");
}
}
returnrtnArray;
}
/**
*把字符串类型的数组转换成一个CSV行。(输出CSV文件的时候用)
*/
publicstaticStringtoCSVLine(String[]strArray){
if(strArray==null){
return"";
}
StringBuffercvsLine=newStringBuffer();
for(intidx=0;idx<strArray.length;idx++){
Stringitem=addQuote(strArray[idx]);
cvsLine.append(item);
if(strArray.length-1!=idx){
cvsLine.append(',');
}
}
returncvsLine.toString();
}
/**
*字符串类型的List转换成一个CSV行。(输出CSV文件的时候用)
*/
publicstaticStringtoCSVLine(ArrayListstrArrList){
if(strArrList==null){
return"";
}
String[]strArray=newString[strArrList.size()];
for(intidx=0;idx<strArrList.size();idx++){
strArray[idx]=(String)strArrList.get(idx);
}
returntoCSVLine(strArray);
}
//==========以下是内部使用的方法=============================
/**
*计算指定文字的个数。
*
*@paramstr文字列
*@paramc文字
*@paramstart开始位置
*@return个数
*/
privateintcountChar(Stringstr,charc,intstart){
inti=0;
intindex=str.indexOf(c,start);
returnindex==-1?i:countChar(str,c,index+1)+1;
}
/**
*查询下一个逗号的位置。
*
*@paramsource文字列
*@paramst检索开始位置
*@return下一个逗号的位置。
*/
privatestaticintnextComma(Stringsource,intst){
intmaxPosition=source.length();
booleaninquote=false;
while(st<maxPosition){
charch=source.charAt(st);
if(!inquote&&ch==','){
break;
}elseif('"'==ch){
inquote=!inquote;
}
st++;
}
returnst;
}
/**
*取得下一个字符串
*/
privatestaticStringnextToken(Stringsource,intst,intnextComma){
StringBufferstrb=newStringBuffer();
intnext=st;
while(next<nextComma){
charch=source.charAt(next++);
if(ch=='"'){
if((st+1<next&&next<nextComma)&&(source.charAt(next)=='"')){
strb.append(ch);
next++;
}
}else{
strb.append(ch);
}
}
returnstrb.toString();
}
/**
*在字符串的外侧加双引号。如果该字符串的内部有双引号的话,把"转换成""。
*
*@paramitem字符串
*@return处理过的字符串
*/
privatestaticStringaddQuote(Stringitem){
if(item==null||item.length()==0){
return"""";
}
StringBuffersb=newStringBuffer();
sb.append('"');
for(intidx=0;idx<item.length();idx++){
charch=item.charAt(idx);
if('"'==ch){
sb.append("""");
}else{
sb.append(ch);
}
}
sb.append('"');
returnsb.toString();
}
}
⑧ java读取csv文件
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.util.*;
publicclassTest{
publicstaticvoidmain(String[]args){
Hashtable<String,String[]>dict=newHashtable<String,String[]>();
try{
BufferedReaderreader=newBufferedReader(newFileReader("test.csv"));
Stringline=null;
while((line=reader.readLine())!=null){
Stringitem[]=line.split(",");
Stringitem2[]=newString[19];
System.array(item,1,item2,0,19);
dict.put(item[0],item2);
}
Enumeratione2=dict.keys();
while(e2.hasMoreElements()){
Stringkey=(String)e2.nextElement();
System.out.println(key);
String[]dd=(String[])dict.get(key);
for(inti=0;i<dd.length;i++){
System.out.print(dd[i]+" ");
}
System.out.println();
}
}
catch(Exceptione){
e.printStackTrace();
}
}
}
⑨ 如何读取csv文件到excel java
你搜索一下poi