这篇文章主要围绕每行写入新的CSV文件和JAVA展开,旨在为您提供一份详细的参考资料。我们将全面介绍每行写入新的CSV文件的优缺点,解答JAVA的相关问题,同时也会为您带来(PHP)海量数据输出CSV
这篇文章主要围绕每行写入新的CSV文件和JAVA展开,旨在为您提供一份详细的参考资料。我们将全面介绍每行写入新的CSV文件的优缺点,解答JAVA的相关问题,同时也会为您带来(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常、c# – 如何在下一次打开csv文件的下一行写入?、C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建的实用方法。
本文目录一览:- 每行写入新的CSV文件(JAVA)(csv文件每一行表示)
- (PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
- c# – 如何在下一次打开csv文件的下一行写入?
- C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
每行写入新的CSV文件(JAVA)(csv文件每一行表示)
我有以下代码:
public static void main(String[] args) throws IOException {
//File being read:
String fileName = "src/data/Belgium.csv";
String[] nextLine;
try (CSVReader reader = new CSVReader(new FileReader(fileName),','"',1)) {
while ((nextLine = reader.readNext()) != null) {
for (String line : nextLine) {
//NewFile
//When 2nd parameter - ture,it gets so big,that excel can't handle it anymore...
FileWriter writer = new FileWriter("src/dataNew/BelgiumNew1.csv",true);
line = line.replaceAll("T"," ");
line = line.replaceAll("Z","");
line = line.replaceAll("ActualGenerationPerUnit.mean","");
line = line.replaceAll("Plantname:","");
//Escaping curly braces is a must!
line = line.replaceAll("\\{","");
line = line.replaceAll("\\}","");
writer.append(line);
writer.flush();
writer.close();
System.out.println(line);
}
}System.out.println("Successfully written");
}
}
在控制台中,使用System.out.println(line)输出的代码为我提供了正确的输出。但是,当我打开CSV文件时,它似乎是反向写入的。Excel首先抱怨行数。但是,仅显示原始数据集的最后一行。数据集(以一种低效的方式进行了预处理)包含1000多个行。因此,我不能简单地附加每个条目。
有更好的方法吗?
提示和技巧非常受欢迎。更进一步,我尝试了一些编写器:-CSVwrite-BufferedWriter-FileWriter
还检查了Stackoverflow上的其他问题…似乎无法使其正常工作。谢谢!
更新:
问题得到解答!最终代码:
public static void main(String[] args) throws IOException {
//File being read:
String fileName = "src/data/Belgium.csv";
//When 2nd parameter - ture,that excel can't handle it anymore...
FileWriter writer = new FileWriter("src/dataNew/BelgiumNew5.csv",true);
String[] nextLine;
try (CSVReader reader = new CSVReader(new FileReader(fileName),1)) {
while ((nextLine = reader.readNext()) != null) {
for (String line : nextLine) {
line = line.replaceAll("T","");
writer.append(line);
writer.append(System.lineSeparator());
System.out.println(line);
}
}System.out.println("Successfully written");
}catch(Exception e){
e.printStackTrace();
}finally {
if (writer != null){
writer.flush();
writer.close();
}
}
}
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx 很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。 例如: $csvDate = 中文,日文,韩文,西班牙'',''文,阿拉
http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx
很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。
例如:
$csvDate = "中文,日文,韩文,西班牙'',''文,阿拉伯文";
$srcDir = ''/workspace/CSVList'';
$srcFile = $srcDir.date("Ymd").".csv";
if(!is_dir($srcDir)){
$fh = fopen($srcFile,''wb'');
fwrite($fh,$csvDate);
fclose($fh);
}
我们想要得CSV文件是这样的格式
中文 | 日文 | 韩文 | 西班牙'',''文 | 阿拉伯文 |
但是由于,西班牙文中有单引号和逗号
实际上在Excel中是这样的
中文 | 日文 | 韩文 | 西班牙'' | 文 | 阿拉伯文 |
解决方法一般来说就是使用转义符来进行赋值,不过如果遇到海量数据的情况下,这样的办法是不可取的。
下面推荐使用array_push和fputcsv相结合的方法来解决该问题。
这里通过程序来说明:
$srcDir = ''/workspace/UnLockList/'';
( !is_dir($srcDir) ) && (mkdir($srcDir, 0777) && chmod($srcDir,0777)) ;
$srcFile = $srcDir . date("Ymd") . ''.csv'';
$rs0 = GetCSVData($PRDBConn); //UnLockTN_Request返回的是二维数组
$fh = fopen($srcFile, ''wb'');
if(count($rs0)){
fputcsv($fh,split('','',"申請ID,機種名,EB-№,申請№,部品名,LockUser"));
foreach($rs0 as $line0 ){
fputcsv($fh,$line0);
}
}
fputcsv($fh,array());
fclose($fh);
chmod($srcFile,0666);
function GetCSVData ($PRDBConn){
$RETURN_ARRAY = array();
//数据库连接
.....
.....
$RS01 = 记录集;
foreach ($RS01 AS $ROW01){
$line = array();
array_push($line,$ROW01["ID"]);
array_push($line,$ROW01["NAME"]);
array_push($line,$ROW01["NO"]);
.......
array_push($RETURN_ARRAY,$line);
}
return $RETURN_ARRAY;
}
立即学习“PHP免费学习笔记(深入)”;
如上程序所示,就可以解决大量数据输出成CSV文件中,出现特殊意义字符,导致输出CSV文件格式异常的问题了。
c# – 如何在下一次打开csv文件的下一行写入?
但是,当我在第二个……第三个时间运行我的程序时,它会在第一行运行.
我怎么能纠正它?
我想输入所有进入我程序的CSV文件.
代码如下:
private void WritetoCsvFile() { var us = users.ElementAt(0); string names = "Number',"; string userAnswer = (us.userName + ","); foreach (string ss in user) { string str = Path.GetFileName(ss); names = names + str + ","; } foreach (string ans in us.answer) { userAnswer = userAnswer + ans + ","; } using (StreamWriter sw = new StreamWriter("EntranceLog.csv")) { sw.WriteLine(names); sw.WriteLine(userAnswer); } this.Close(); }
解决方法
using (StreamWriter sw = new StreamWriter("EntranceLog.csv",true))
名为append的第二个参数控制是否覆盖或附加现有文件. MSDN州:
true
to append data to the file;false
to overwrite the file. If the specified file does not exist,this parameter has no effect,and the constructor creates a new file.
C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件
/// <summary>
/// 写入数据到CSV文件,覆盖形式
/// </summary>
/// <param name="csvPath">要写入的字符串表示的CSV文件</param>
/// <param name="LineDataList">要写入CSV文件的数据,以string[]类型List表示的行集数据</param>
public static void OpCsv(string csvPath, List<string[]> LineDataList)
{
using (FileStream fs = new FileStream(csvPath.Trim(), FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))
{
StringBuilder sb_csvStr = new StringBuilder();
for (int i = 0; i < LineDataList.Count; i++)//<--row
{
sb_csvStr.Clear();
for (int j = 0; j < LineDataList[i].Length; j++)//<--col
{
sb_csvStr.Append(string.Format("{0},", LineDataList[i][j].ToString()));
}
sw.WriteLine(sb_csvStr.ToString().Substring(0, sb_csvStr.ToString().Length - 1));
}
fs.Flush();
}
}
}
/// <summary>
/// 读取csv文件
/// </summary>
/// <param name="csvPath">string 标识的 csv文件路径</param>
/// <returns>返回的读取的 csv 文件的行集合</returns>
public static string[] ReadCsv(string csvPath)
{
string[] csvLineList = File.ReadAllLines(csvPath, Encoding.Default);
return csvLineList;
}
CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
一.csv文件的创建
(1)新建一个文本文档:
打开新建文本文档,进行编辑。
注意:关键字与关键字之间用英文半角逗号隔开。第一行为引用字段,第二行为对应值。例如:
(2)生成csv文件
将文本文档重命名更改文件扩展名,将“.txt”改为“.csv”
重命名重新打开后就是一个CSV文件格式。例如:
二.数据的表示和读写
csv文件的每一行都是一维数据,可以使用python中的列表类型表示,整个csv文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。
注:打开CSV文件的路径可以是绝对路径也可以是相对路径,可根据个人习惯来编写。
(1)导入csv格式数据到列表:
1 fo=open("city.csv","r")#打开命名为city的CSV文件
2 ls=[] #定义一个空列表,将CSV中读取的文件放进列表
3 for line in fo:
4 line=line.replace("\n","")
5 ls.append(line.split(","))
6 print(ls)
7 fo.close()#关闭文件
运行结果:
[[''城市'', ''环比'', ''同比'', ''定基''], [''北京'', ''101.5'', ''120.7'', ''121.4''], [''上海'', ''101.2'', ''127.3'', ''127.8''], [''广州'', ''101.3'', ''119.4'', ''120.0''], [''深圳'', ''102.0'', ''140.9'', ''145.5''], [''沈阳'', ''100.1'', ''101.4'', ''101.6''], ['''', '''', '''', '''']]
(2)逐行处理CSV格式数据:
1 fo=open("city.csv","r")#打开命名为city的CSV文件
2 ls=[]#定义一个空列表,将CSV中读取的文件放进列表
3 for line in fo:
4 line=line.replace("\n","")
5 ls=line.split(",")
6 lns=""
7 for s in ls:
8 lns+="{}\t".format(s)
9 print(lns)
10 fo.close()
运行结果:
城市 环比 同比 定基
北京 101.5 120.7 121.4
上海 101.2 127.3 127.8
广州 101.3 119.4 120.0
深圳 102.0 140.9 145.5
沈阳 100.1 101.4 101.6
(3)将一维数据写入CSV文件:
1 fo=open("city.csv","w")
2 ls=[''湖北'',''101.2'',''120.7'',''121.4'']
3 fo.write(",".join(ls)+"\n")
4 fo.close()
运行结果;
city.csv文件原有数据:
运行之后的数据:
(4)将二维数据写入CSV文件:
1 fr=open("city1.csv","r")
2 fw=open("city1out.csv","w")
3 ls=[]
4 for line in fr:#将CSV文件当中的二维数据读到列表当中去
5 line=line.replace("\n","")
6 ls.append(line.split(","))
7 for i in range(len(ls)):#遍历列表变量计算百分数
8 for j in range(len(ls[i])):
9 if ls[i][j].replace(".","").isnumeric():
10 ls[i][j]="{:.2}%".format(float(ls[i][j])/100)
11 for row in ls:#将列表变量中的两位数据写入CSV文件当中去
12 print(row)
13 fw.write(",".join(row)+"\n")
14 fr.close()
15 fw.close()
运行结果:
city1文件数据与前两个例子的city文件的内容相同,city1out.csv文件为新建立的一个CSV文件。
city1out.csv文件数据:
关于每行写入新的CSV文件和JAVA的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常、c# – 如何在下一次打开csv文件的下一行写入?、C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建等相关知识的信息别忘了在本站进行查找喔。
本文标签: