如何从CSV格式的文件中,读取出相应的数据
而且CSV中的数据有一个表格样子的格式,要读取“備考”这一列里面的数据出来
请教各位高手No 項目 備考
1 電機
2 WBS
3 PID
4 CP
5 社供出
6 原価実績
7 社供WC
8 外注費
9 直材費
10 自家製品
11 直経費
12 その他
13 注残
14 注残
而且CSV中的数据有一个表格样子的格式,要读取“備考”这一列里面的数据出来
请教各位高手No 項目 備考
1 電機
2 WBS
3 PID
4 CP
5 社供出
6 原価実績
7 社供WC
8 外注費
9 直材費
10 自家製品
11 直経費
12 その他
13 注残
14 注残
我要读取的是備考这一栏里面的数据。No 項目 備考
1 電機
2 WBS
3 PID
4 CP
5 社供出
6 原価実績
7 社供WC
8 外注費
9 直材費
10 自家製品
11 直経費
12 その他
13 注残
14 注残
有两个方法吧:
1,如果你确定有三列,那么可以一行行的读取csv文件,然后用,分割读出的行,取分割出的最后的值。
2,如果数据量比较大,可以考虑先导入数据库,然后取到结果再导出。
import java.io.BufferedReader;
import java.io.FileReader;public class TestRead { 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();
}
}}
* 把列表内容导出到指定的CSV文件
*
* @param response
* 传入的HttpServletResponse
* @param file
* 指定的文件名
* @param rows
* 要导出的列表内容
* @throws IOException
*
* @author kakukyowu
*/
public static void exportCsv(HttpServletResponse response, String file, List<String[]> rows) throws IOException { StringBuffer record = new StringBuffer(); for (int i = 0; i < rows.size(); i++) {
String[] cells = rows.get(i); if (cells != null) {
for (int j = 0; j < cells.length; j++) {
record.append(cells[j] + ",");
}
record.append("\r\n");
}
} response.reset(); response.setContentType("Application/text/csv"); response.setHeader("Content-Disposition", "attachment;filename=\"" + URLEncoder.encode(file, DEFAULT_ENCODING)
+ "\""); ServletOutputStream servletout = response.getOutputStream();
PrintWriter outpw = new PrintWriter(new OutputStreamWriter(servletout, "MS932")); outpw.write(record.toString());
outpw.close();
servletout.close();
}
action:/**
*
* XXXXXX
* @param actionMapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*
* @author kakukyowu
*/
@SuppressWarnings("unchecked")
public ActionForward doexportCsv(ActionMapping actionMapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception { String fileName = "XXX.csv";
CsvExportUtil.exportCsv(response, fileName, new ArrayList<String[]>());
//new的这个list处调用其它方法查询数据库,然后组织数据返回 return null;
}
----------------------------------
| PID
----------------------
| 電機
----------------------
基本情报 | 内部管理
----------------------
| 名称
----------------------
| PJ種類
-----------------------
| PJ管理
----------------------------------
客户给的一个EXCEL,说上面这个是CSV的格式,
这样的情况,怎么实现呢?
CSV有要求说一行数据不垮行,那么以上的格式能实现吗?
----------------------------------
| PID
----------------------
| 電機
----------------------
基本情报 | 内部管理
----------------------
| 名称
----------------------
| PJ種類
-----------------------
| PJ管理
----------------------------------
com.Ostermiller.util.LabeledCSVParser;
如果用这个类写出来的读取CSV的方法,
但是因为CSV文件里面的是日文,读出来的数据就是乱码,
我想用这个类,该怎么做才能正确的读出数据,而不是乱码呢?
我都是用EmEditor,
打开后右下角会有字符集提示,
双击一下就会弹出字符集,选择就是了。