.CSV文件是以逗号分割的数据仓储,读取数据时从每一行中读取一条数据元祖,也就是一条数据,再用字符分割的方式获取表中的每一个数据项。
package com.conn.csv;
import java.io.BufferedReader;
import java.io.FileReader;
* @desc: 读取csv文件
* @author: tzconn@163.com
* @time: 2018年3月22日16:22:41
public class TestRead {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("*.csv"));
reader.readLine();
String line = null;
while((line=reader.readLine())!=null){
String item[] = line.split(",");
String last = item[item.length-1];
System.out.println(last);
} catch (Exception e) {
e.printStackTrace();
写入数据则注意数据逗号分隔的格式,以文件写入的方式即可。
package com.conn.csv;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
* @desc: 写入数据到csv文件
* @author: tzconn@163.com
* @time: 2018年3月22日16:26:32
public class WriteCSV {
public static void main(String[] args) {
try {
File csv = new File("D:/writers.csv");
BufferedWriter bw = new BufferedWriter(new FileWriter(csv, true));
bw.write("\"张三\"" + "," + "\"2000\"" + "," + "\"2004\"");
bw.newLine();
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
以上内容参考自博客:https://blog.csdn.net/tzconn/article/details/79655892
在读取CSV文件并以“,”切割的时候,会出现一个问题:如果单元格内容中含有英文的逗号,那就会把单元格内的内容也切割开,解决办法如下:
String item[] = line.trim().split(",(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)",-1);
这个正则表达式的含义是避免切割英文双引号内的英文逗号,原因是因为csv文件的单元格中有英文逗号的话,单元格的内容实际上是会被英文双引号包括起来。这个双引号使用excel打开的时候是看不到的,但是如果读进程序里就可以看到了(或者使用notepad++这样的编辑器打开也可以看到),所以我们可以使用这个正则表达式来解决切分单元格内容的问题。
.CSV文件是以逗号分割的数据仓储,读取数据时从每一行中读取一条数据元祖,也就是一条数据,再用字符分割的方式获取表中的每一个数据项。package com.conn.csv; import java.io.BufferedReader; import java.io.FileReader; /** * @desc: 读取csv文件 * @author: tzconn@163.com * @time: 2018年3月22日16:22:41 */ public .
最近要做
csv文件的导出,因为
csv文件是用
逗号隔开的文本
文件,用excel打开
csv文件的时候会按
逗号分
单元格。导致导出来的
数据有的
包含逗号的被隔开在多个
单元格里面。
解决方式:
把
数据中的
逗号加上双引号,就可以避免被解析,可以防止上面的
问题出现。
String value =json.getString(title);
if(json.getString(title).contains(",")) {
value = "\""+value+"\"";
一. 对于CSV的读写既可以像读写txt文件似的读写//读文件
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(
众所周知,csv文件默认以逗号“,”分割数据,那么在scala命令行里查询的数据:
可以看见,字段里就包含了逗号“,”,那接下来切割的时候,这本应该作为一个整体的字段会以逗号“,”为界限进行切割为多个字段。
现在来看看这里的_c0字段一共有多少行记录。
记住这个数字:60351行
写scala代码读取csv文件并以逗号为分隔符来分割字段
val lineRDD = sc.textFile("xxxx/xxx.csv").map(_.split(","))
这里只读取了_c0一个字段,否则会报数组下标越
项目中有个功能,要求记录单据从上一级审批到下一级审批的所需时间,不常用日期转换之类的东西,所以记录在此,以备后用。
package com.tdhc.puPriceParityManagement.util;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
错误代码:
错误原因:输出流关闭之后,socket也已经关闭,不能再次发送response,所以导致错误的就是return的返回值信息,这时候把return res;改成return null;就可以了,这样就不会因为需要返回信息而需要再次发送response,错误就解决了
附上参考的大佬博客:点击跳转
String str = “000000001234034120”;
String newStr = str.replaceAll("^(0+)", “”);
System.out.println(newStr);
输出结果:1234034120
包含有“/”,“-”这样特殊字符,以及除了特殊字符以外还包含英文字母的情况【比如00.
背景:项目中用到邮件发送功能,需要将数据导入excel表格然后发送给供应商,第一次做的时候是直接创建了一个excel,领导说比较丑,就找甲方要了个模板,所以本篇文章除了介绍直接生成excel导入数据的功能以外,也介绍按照固定模板的方式导入数据的功能。
1.新生成一个Excel,并将数据导入
package com.tdhc.common.util;
import com.tdhc.common....