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 が欠落している場合があります。その場合、サンプル出力の最初の 4 行のように、新しい CSV に空白を入れたいと思います。

そのための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 に答える