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