1 基本介紹
可以說{
tagshow(event, 'CSV');
}" href="javascript:;" target="_self">CSV格式的檔案經常碰到,何為CSV格式,CVS全稱comma-separated values,就是典型的用逗號隔開的檔案,比如下面這種檔案格式
Name,company
zhangsan,ibm
lisi,oracle
這種就是典型的CSV格式檔案。不過也可以擴充到其它符號隔開的字元,比如
Name#company
Zhangsan#ibm
Lisi#oracle
這種也算CSV格式
{
tagshow(event, 'Java');
}" href="javascript:;" target="_self">Java開源架構CVSReader提供了一個輕量級、簡單方便的統一操作介面可用,下面具體講解如何操作CVS格式
2 安裝和{
tagshow(event, '%CA%B9%D3%C3');
}" href="javascript:;" target="_self">
使用2.1{
tagshow(event, '%CF%C2%D4%D8');
}" href="javascript:;" target="_self">
下載
目前CSV reader的最新發行版本是1.8。我們可以從
http://opencsv.sourceforge.net/
上面下載到最新的csvreader包。
2.2安裝
直接把jar包分別存放到開發工程的類路徑下面即可使用。
3 讀取CSV格式檔案3.1基本簡介
首先,讀取CSV格式的檔案需要建立一個CSVReader,如下
CsvReader reader = new CsvReader(Reader r, char c);
其中第一個參數為讀取檔案,第二個參數為分割符,比如“,”,或者“#”
另外,也有其它幾個參數,可以查閱API,比如
CsvReader reader = new CsvReader(InputStream r, char c, Charset charset);等等
其次,一般需要讀取頭資訊,如下:
reader.readHeaders();
String[] headers = reader.getHeaders();
讀取了後,指標就會移動到下一行,也就是可以開始讀取檔案內容
假如,有多行的話,可以用一個迴圈套入,例如下面:
while (reader.readRecord()) {
for (int i = 0; i < headers.length; i++) {
String value = reader.get(headers[i]);
System.out.print(value+" ");
}
System.out.println("");
}
3.2綜合例子
在C盤下建立一個測試檔案test.cvs,內容如下:
a#b#c
1#2#3
4#5#6
下面是解析代碼:
public static void main(String[] args) throws Exception {
CsvReader reader = new CsvReader(new FileReader("c://csv.txt"), '#');
reader.readHeaders();
String[] headers = reader.getHeaders();
while (reader.readRecord()) {
for (int i = 0; i < headers.length; i++) {
String value = reader.get(headers[i]);
System.out.print(value+" ");
}
System.out.println("");
}
}
運行以上程式,可以看到輸出
1 2 3
4 5 6
4 寫CSV格式檔案
寫CSV格式檔案也比較簡單,寫每一列只要直接調用
csvWriter.write()即可
另外,寫完每行結束後,都要調用csvWriter.endRecord();
表示結束一行
檔案寫完畢後,要記得重新整理一下並關掉,如下:
csvWriter.flush();
csvWriter.close();
代碼如下:
publicstaticvoidmain(String[] args)throwsException {
CsvWriter csvWriter =newCsvWriter(newFileWriter("c://test.text"),'#');
csvWriter.write("name");
csvWriter.write("company");
csvWriter.endRecord();
csvWriter.write("11");
csvWriter.write("12");
csvWriter.endRecord();
csvWriter.write("21");
csvWriter.write("22");
csvWriter.flush();
csvWriter.close();
}
}
運行以上程式,可以看到C盤下面建立了一個檔案
test.text
內容如下:
name#company
11#12
21#22
----------------------------------------------------------------------------------------------------------------------------------------------
利用jsp匯出csv檔案
jsp編寫如下:
<%@page contentType="application/vnd.ms-csv; charset=GBK" language="java"%><% response.setHeader("Content-disposition","attachment; filename=check_charge.csv;style=vnd.ms-csv.numberformat:@");%><%@ taglib prefix="s" uri="/struts-tags"%><s:iterator value="pageIlChargeLogList"><s:property value="ilUser.iptvId" />,<s:date name="chargeTime" format="yyyyMMddHHmmss"/>,ITV福彩儲值,<s:property value="chargeMoney" />
</s:iterator>
action return 此頁面即可匯出