0

私の要件は、DB からの値を .csv ファイルに書き込み、同じものを電子メールで送信することです。以下のコードで DB から値をフェッチし、createFile(testFile) メソッドによってファイルを作成してサーバーの場所に保存し、同じものを電子メールで送信しました。

//サンプル入力データ:
SRT678,Textile STS Secure Limited, OMD,First,Last

問題は、SRT678 が column1 、Textile STS Secure Limited - column2 、OMD - column3 に移動することですが、column2 に " Textile STS Secure Limited, OMD " が必要です。区切り文字を「、」として設定しませんでしたが、デフォルトでは「、」が区切り文字として使用されると思います。

Excel はシステムの地域設定を使用します - リストセパレーターを使用して、使用するデフォルトの区切り文字を決定します。コードを使用して変更を行う方法はありますか? Textile STS Secure Limited, OMDの"," をスキップして、Excel で同じ列にする方法を教えてください。

      public Object extractData(ResultSet rs) {
      List list1 = new ArrayList();
      TestFileInfo testFile = new TestFileInfo();
      String base_name="UsersInfo";
      String file_name=base_name + ".csv";
      testFile.setFileName(file_name);
        String header_row="empid,empName,firstName,lastName\r\n";
      list1.add(header_row);
        boolean valid = true;
        int total = 0;
        while (rs.next()) {
           if (valid) {
               total ++;
               String row = rs.getString("empid") 
                + "," + rs.getString("empName") 
                + "," + rs.getString("firstName")
                + "," + rs.getString("lastName")  
                + "\r\n" ;
            list1.add(row);
           }
           else {
                break;
               }
            }
          if (valid)
        {
            testFile.setTotalRecords(total);
            testFile.setRowList(list1);
        }
        else  
        {
            testFile = null;
        }
      return testFile;
     }

// createFile(testFile);

      static public void createFile( TestFileInfo testFile){
      List rowList = file.getRowList();
      File testFile = new File(location,file.getFileName()); 
     if (!testFile.exists()) {
          testFile.createNewFile();
    }
      FileWriter fstream = new FileWriter(testFile);
        BufferedWriter out = new BufferedWriter (fstream);
        for (Iterator row = rowList.iterator(); row.hasNext();) {
               out.write((String) row.next());
            }
            out.close();
            file.setCsvFile(testFile);
        return ;
       }

あなたの助けをいただければ幸いです!ありがとう!

4

1 に答える 1

1

ファイルはコンマ区切りです。そのため、コンマが検出されるたびに、新しい列エントリと見なされます。

これをスキップするには、エントリを二重引用符 ("a, b, c") で囲みます。

ここで、a、b、c が 1 つの列になりました。

これを実現するために、.contains()メソッドを使用して、カンマが含まれているかどうかを確認します。

String x = rs.getString("emid");
if(x.contains("\""))
  x = x.replace("\"", "\"\""); 
if(x.contains(",")) 
   x = "\"" + x + "\"";
于 2015-07-06T07:49:15.500 に答える