我是初学者,但我想请教如何制作读取csv档的java,来统计资料,如整列的总和除资料输入的人数。

我是初学者,但我想请教如何制作读取csv档的java,来统计资料,如整列的总和除资料输入的人数。,第1张

csv文件不同于excel文件,你就当它是文本文件就行了,

你用txt打开就能看见他的文本表示:

5,ccc,M,20

20,thomas,M,60

28,ddd,M,30

60,bbb,M,20

每个数据之间用逗号隔开的。

知道了这个规则,

你就用java普通的方式读取csv文件即可,

然后用逗号分割你取得的数据进行统计。

希望能给你带来帮助。

package comtest;

import javaioBufferedReader;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStreamReader;

import javautilArrayList;

import javautilList;

import javautilregexMatcher;

import javautilregexPattern;

public class TestImportCsv {

private InputStreamReader fr = null;

private BufferedReader br = null;

public TestImportCsv(String f) throws IOException {

fr = new InputStreamReader(new FileInputStream(f));

}

/

解析csv文件 到一个list中 每个单元个为一个String类型记录,每一行为一个list。 再将所有的行放到一个总list中

/

public List<List<String>> readCSVFile() throws IOException {

br = new BufferedReader(fr);

String rec = null;// 一行

String str;// 一个单元格

List<List<String>> listFile = new ArrayList<List<String>>();

try {

// 读取一行

while ((rec = brreadLine()) != null) {

Pattern pCells = Pattern

compile("(\"[^\"](\"{2})[^\"]\")[^,],");

Matcher mCells = pCellsmatcher(rec);

List<String> cells = new ArrayList<String>();// 每行记录一个list

// 读取每个单元格

while (mCellsfind()) {

str = mCellsgroup();

str = strreplaceAll(

"(sm)\"([^\"](\"{2})[^\"])\",", "$1");

str = strreplaceAll("(sm)(\"(\"))", "$2");

cellsadd(str);

}

listFileadd(cells);

}

} catch (Exception e) {

eprintStackTrace();

} finally {

if (fr != null) {

frclose();

}

if (br != null) {

brclose();

}

}

return listFile;

}

public static void main(String[] args) throws Throwable {

TestImportCsv test = new TestImportCsv("D:/testcsv");

List<List<String>> csvList = testreadCSVFile();

}

}

看楼主比较懂,

参阅RandomAccessFile类

先用seek(long pos)把指针指向文件最后

然后视你的数据用

writeBytes(String s) //有汉字什么的

writeChars(String s) //一般的字符串

writeUTF(String str) //有UTF-8的字符

写入数据

我来说一下大致的实现步骤,具体实现需要你自己去写了

1你点下载按钮后需要到数据库中重新检索一下数据,检索到的数据假定为一个list

2你需要自己写一个objectToString之类的方法来把检索到的数据转化为一个String或StringBuffer,就是往各字段间插",",往个记录间插"\r\n",如此这类的转换,假定转换好的字符串为strResult

3然后用下面的代码写在后台来控制下载,文件名那里你可以把时间格式控制好,或者用前台传过来的参数做名字。

responsesetContentType("application/download;charset=UTF-8");

responsesetHeader("Content-disposition","attachment;filename=\"" +new Date()+"csv\"");

OutputStream o = responsegetOutputStream();

byte b[] = strResultgetBytes();

try{

owrite(b);

}catch(IOException e){

eprintStackTrace();

}finally{

oclose();

}

这么简单的事情。。。

FileWriter f = null;

f = new FileWriter("E:\\add3cvs");

for(Person person: personList)

{

fwrite(persongetName());

fwrite(",");

fwrite(persongetAge());

fwrite("\n");

fflush();

}

fclose();

personList你取的值,person你的对象,OK了吧,cvs就是逗号文件,输出逗号就是换列,回车换行

以上就是关于我是初学者,但我想请教如何制作读取csv档的java,来统计资料,如整列的总和除资料输入的人数。全部的内容,包括:我是初学者,但我想请教如何制作读取csv档的java,来统计资料,如整列的总和除资料输入的人数。、如何用Java解析CSV文件、java *** 作csv文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9378578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存