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文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)