GVKun编程网logo

每行写入新的CSV文件(JAVA)(csv文件每一行表示)

11

这篇文章主要围绕每行写入新的CSV文件和JAVA展开,旨在为您提供一份详细的参考资料。我们将全面介绍每行写入新的CSV文件的优缺点,解答JAVA的相关问题,同时也会为您带来(PHP)海量数据输出CSV

这篇文章主要围绕每行写入新的CSV文件JAVA展开,旨在为您提供一份详细的参考资料。我们将全面介绍每行写入新的CSV文件的优缺点,解答JAVA的相关问题,同时也会为您带来(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常、c# – 如何在下一次打开csv文件的下一行写入?、C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建的实用方法。

本文目录一览:

每行写入新的CSV文件(JAVA)(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文件格式异常

(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相结合的方法来解决该问题。

这里通过程序来说明:

(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常$srcDir = ''/workspace/UnLockList/'';
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
!is_dir($srcDir) ) && (mkdir($srcDir, 0777&& chmod($srcDir,0777)) ;
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$srcFile = $srcDir . date("Ymd". ''.csv'';
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$rs0 = GetCSVData($PRDBConn);  //UnLockTN_Request返回的是二维数组
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$fh = fopen($srcFile, ''wb'');
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
if(count($rs0)){
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        fputcsv(
$fh,split('','',"申請ID,機種名,EB-№,申請№,部品名,LockUser"));
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        
foreach($rs0 as $line0 ){
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常                fputcsv(
$fh,$line0);
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        }
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常}
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常fputcsv(
$fh,array());
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
fclose($fh);
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
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文件格式异常

立即学习“PHP免费学习笔记(深入)”;


如上程序所示,就可以解决大量数据输出成CSV文件中,出现特殊意义字符,导致输出CSV文件格式异常的问题了。

 

 

c# – 如何在下一次打开csv文件的下一行写入?

c# – 如何在下一次打开csv文件的下一行写入?

在第一次运行时,我的程序写入第一行的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();
}

解决方法

在构造函数中添加true参数:
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文件

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文件数据如何读取、导入、导出到新的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文件的创建等相关知识的信息别忘了在本站进行查找喔。

本文标签: