用Java解析CSV檔案
例子:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* 檔案規則
* Microsoft的格式是最簡單的。以逗號分隔的值要麼是“純粹的”(僅僅包含在括號之前),
* 要麼是在雙引號之間(這時資料中的雙引號以一對雙引號表示)。
* Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K
* 這一行包含七個欄位(fields):
* Ten Thousand
* 10000
* 2710
* 空欄位
* 10,000
* It's "10 Grand", baby
* 10K
* 每條記錄佔一行
* 以逗號為分隔符
* 逗號前後的空格會被忽略
* 欄位中包含有逗號,該欄位必須用雙引號括起來。如果是全形的沒有問題。
* 欄位中包含有換行符,該欄位必須用雙引號括起來
* 欄位前後包含有空格,該欄位必須用雙引號括起來
* 欄位中的雙引號用兩個雙引號表示
* 欄位中如果有雙引號,該欄位必須用雙引號括起來
* 第一條記錄,可以是欄位名
*/
/**
*
*
*
*
* @author 徐飛
* @version 1.0
* createDate Aug 11, 2008
* 修正履歴
* 修正日 修正者 修正理由
*/
public class CSVAnalysis {
private InputStreamReader fr = null;
private BufferedReader br = null;
public CSVAnalysis(String f) throws IOException {
fr = new InputStreamReader(new FileInputStream(f));
}
/**
* 解析csv檔案 到一個list中
* 每個單元個為一個String型別記錄,每一行為一個list。
* 再將所有的行放到一個總list中
* @return
* @throws IOException
*/
public List
CODE:
package xufei;import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* 檔案規則
* Microsoft的格式是最簡單的。以逗號分隔的值要麼是“純粹的”(僅僅包含在括號之前),
* 要麼是在雙引號之間(這時資料中的雙引號以一對雙引號表示)。
* Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K
* 這一行包含七個欄位(fields):
* Ten Thousand
* 10000
* 2710
* 空欄位
* 10,000
* It's "10 Grand", baby
* 10K
* 每條記錄佔一行
* 以逗號為分隔符
* 逗號前後的空格會被忽略
* 欄位中包含有逗號,該欄位必須用雙引號括起來。如果是全形的沒有問題。
* 欄位中包含有換行符,該欄位必須用雙引號括起來
* 欄位前後包含有空格,該欄位必須用雙引號括起來
* 欄位中的雙引號用兩個雙引號表示
* 欄位中如果有雙引號,該欄位必須用雙引號括起來
* 第一條記錄,可以是欄位名
*/
/**
*
タイトル: xufei.CSVAnalysis.java
*
説明:
*
著作権: Copyright (c) 2006
*
會社名: technodia
* @author 徐飛
* @version 1.0
* createDate Aug 11, 2008
* 修正履歴
* 修正日 修正者 修正理由
*/
public class CSVAnalysis {
private InputStreamReader fr = null;
private BufferedReader br = null;
public CSVAnalysis(String f) throws IOException {
fr = new InputStreamReader(new FileInputStream(f));
}
/**
* 解析csv檔案 到一個list中
* 每個單元個為一個String型別記錄,每一行為一個list。
* 再將所有的行放到一個總list中
* @return
* @throws IOException
*/
public List
- > readCSVFile() throws IOException {
br = new BufferedReader(fr);
String rec = null;//一行
String str;//一個單元格
List
- > listFile = new ArrayList
- >();
try {
//讀取一行
while ((rec = br.readLine()) != null) {
Pattern pCells = Pattern
.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,");
Matcher mCells = pCells.matcher(rec);
List
//讀取每個單元格
while (mCells.find()) {
str = mCells.group();
str = str.replaceAll(
"(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");
str = str.replaceAll("(?sm)(\"(\"))", "$2");
cells.add(str);
}
listFile.add(cells);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fr != null) {
fr.close();
}
if (br != null) {
br.close();
}
}
return listFile;
}
public static void main(String[] args) throws Throwable {
CSVAnalysis parser = new CSVAnalysis("c:/test2.csv");
parser.readCSVFile();
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/301743/viewspace-745800/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個CSV檔案解析類
- NPM酷庫049:csv-parse,解析csv檔案NPM
- java匯出CSV檔案Java
- csv檔案用什麼開啟 csv是什麼格式檔案
- Java實現CSV檔案的匯出Java
- csv是什麼格式檔案 csv檔案是什麼意思
- Modern CSV for mac CSV檔案編輯器Mac
- java class檔案解析Java
- pandas操作csv檔案
- CSV檔案儲存
- java class 檔案格式解析Java
- java解析yaml配置檔案JavaYAML
- 使用 Java 解析XML檔案JavaXML
- Mysql匯入csv檔案MySql
- python生成CSV檔案Python
- iOS讀取.csv檔案iOS
- python - csv : 將text轉為csv檔案 (txt2csv)Python
- CSV Converter Pro for Mac(csv檔案轉換工具) v2.0啟用版Mac
- 基於 java 註解的 csv 檔案讀寫框架Java框架
- Python 高階程式設計:深入解析 CSV 檔案讀取Python程式設計
- 使用dbeaver 用csv 檔案進行資料遷移
- Java解析ELF檔案:ELF檔案格式規範Java
- js實現使用檔案流下載csv檔案JS
- Jvm之用java解析class檔案JVMJava
- csv跨域傳輸再生成csv檔案處理跨域
- PHP 匯出 CSV 格式檔案PHP
- SQLServer匯入大CSV檔案SQLServer
- mysql匯入csv格式檔案MySql
- python 讀取csv檔案Python
- oralce 匯出csv格式檔案
- python 寫入CSV檔案Python
- Java XML檔案解析書目錄JavaXML
- django下載csv檔案筆記Django筆記
- SQLite3 匯出 CSV 檔案SQLite
- Django - 檢視層 - 生成CSV檔案Django
- 使用 Python 處理 CSV 檔案Python
- JXL包大解析;Java程式生成excel檔案和解析excel檔案內容JavaExcel
- 使用go語言對csv檔案進行解析處理,匯入匯出。Go