0

我有一个类似下面的 CSV

Element,Value
LIN,887873083091
QTY,12
LIN,887873083107
QTY,13
LIN,887873083114
QTY,10
LIN,887873083121
QTY,6
LIN,887873083138
QTY,0
Avialability,018
Avail_Date,20391231
LIN,887873083145
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732553461
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637901
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637918
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637925
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637932
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637949
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637956
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637963
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637970
QTY,0
Avialability,018
Avail_Date,20391231

如您所见,有 4 个元素。LIN,数量,可用性,Avail_Date

我想将这些元素作为列并在其下放置值并将其作为 CSV 文件。

像下面的示例

LIN,QTY,Availability,Avail_Date
887873083091,12,,
887873083107,13,,
887873083114,10,,
887873083121,6,,
887873083138,0,018,20391231
887873083145,0,018,20391231
886732553461,0,018,20391231

原来的顺序是 LIN、QTY、Availability 和 Avail_Date .. 但在某些情况下,Availability 和 Avail_Date 可能会丢失。在这种情况下,我想将空白放入新的 CSV,就像示例输出中的前 4 行一样。

我怎样才能为此编写Java代码?谁能给出任何解决方案?我什么都没试过,因为我不知道

4

2 回答 2

0
 String[] colName = {"LIN","QTY","Availability","Avail_Date"};
    String output = "";

    int colNum = 0;

    // Using file handling read row one by one (readUTF method) : this is sudo code only
    // or you can use the CSV parser
    while(!EOF)
    {

      // spilt key and value using ","

       for(int i = colNum;i<colName.length;i++){

         if(colName[i].equals(key)){
            output = output  + value + ","
            break;
         }else{
             output = output  ","
         }

       }
       colNum = i;

       if(colNum == colName.length ){
          output = output  "\n";
          colNum = 0;
       }
} // end while

我没有运行这段代码。所以可能需要一些小的改动。

于 2013-09-04T06:05:30.773 回答
0

这是一个粗略的大纲,可以帮助您入门:

  1. 创建一个具有以下属性的简单助手类:LIN、QTY、Availability、Avail_Date。
  2. 逐行阅读
  3. 创建一个新的助手类实例并将其放入 ArrayList。
  4. 对于每一行调用 split()
  5. 填写您的助手类的适当属性。
  6. 如果您检测到您读取了新对象,请创建帮助程序类的新实例。
  7. 在您的 ArrayList 上读取文件循环并将一行写入输出文件后。

尝试一下,如果遇到困难,请发布您的代码。

于 2013-09-04T05:53:12.580 回答