2012-09-03 30 views
8

Tôi đang cố sắp xếp dữ liệu của mình trong tệp .CSV. Tôi muốn đặt dữ liệu của mình vào một hàng cụ thể để tôi cố gắng đặt "\ n" nhưng nó không hoạt động. Vui lòng giúp tôi trong việc đưa dữ liệu vào một hàng cụ thể. bạn trước ..Android: Cách viết dòng mới trong tệp CSV?

public void writeData(String data,String strFilePath) 
     { 

      PrintWriter csvWriter; 
      try 
      { 

       File file = new File(strFilePath); 
       if(!file.exists()){ 
        file = new File(strFilePath); 
       } 
       csvWriter = new PrintWriter(new FileWriter(file,true)); 


       csvWriter.print(data+","+"hello"); 
       csvWriter.append('\n'); 
       csvWriter.print("world"); 


       csvWriter.close(); 


      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
+1

Ý của bạn là gì bởi "nó không hoạt động"? Chính xác thì bạn thấy gì? Cụ thể khi đặt câu hỏi sẽ cung cấp cho bạn câu trả lời bạn cần. –

+1

Ví dụ: nếu "đầu tiên, thứ hai \ nird" được thêm vào csv, chỉ "đầu tiên" và "thứ hai" hiển thị .. chúng tôi không thể xem "thứ ba" trong tệp csv.I hy vọng đây là vấn đề với android editors.suppose nếu Tôi chuyển .csv của tôi vào cửa sổ PC, thậm chí "thứ ba" có thể nhìn thấy trong hàng mới. –

Trả lời

8

bạn đang có vẻ tốt, và tôi chắc chắn xuống dòng là được viết chính xác vào tệp. Lý do duy nhất mà tôi có thể nghĩ đến là bạn đã mở tệp bằng trình chỉnh sửa không xử lý \n làm dấu tách dòng, nó xử lý cặp \r\n làm dấu tách dòng (như Notepad trên Windows).

Vì vậy, bạn có thể viết dòng mới bằng write.print("\r\n") hoặc chỉ cần mở tệp với một số trình chỉnh sửa khác như vim. Không có vấn đề gì biên tập viên bạn sử dụng để mở tập tin, ký tự dòng mới là có.

+0

Tôi đang cố gắng để mở với excel..its không làm việc như u đã nói ... xin vui lòng hướng dẫn tôi thông qua biên tập viên tốt có thể hiển thị "\ n" –

+0

Bạn đã thử mở tệp từ Excel bằng 'Tệp -> Nhập -> Tệp CSV'. Bạn không nên trực tiếp mở tệp bằng Excel, có thể không phát hiện được tệp đó là tệp CSV. Đối với các trình soạn thảo, 'notepad ++', hoặc các trình soạn thảo thương mại như' EditPlus' hoặc 'UltraEdit' sẽ xử lý' \ n' làm dấu tách dòng. – neevek

+0

Cuối cùng nó làm việc cho tôi với csvWriter.print ("\ r \ n"). @ Neevek Cảm ơn bạn –

1

Hãy thử đoạn mã sau (sử dụng StringBuffer) - một thread-safe, chuỗi có thể thay đổi các ký tự:

public void writeData(String data, String strFilePath) { 

    PrintWriter csvWriter; 
    try { 
     /*1. declare stringBuffer*/ 
     StringBuffer oneLineStringBuffer = new StringBuffer(); 

     File file = new File(strFilePath); 
     if (!file.exists()) { 
      file = new File(strFilePath); 

     } 
     csvWriter = new PrintWriter(new FileWriter(file, true)); 

     /*2. append to stringBuffer*/ 
     oneLineStringBuffer.append(data + "," + "hello"); 
     oneLineStringBuffer.append("\n"); 
     oneLineStringBuffer.append("world"); 

     /*3. print to csvWriter*/ 
     csvWriter.print(oneLineStringBuffer); 

     csvWriter.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
2

Tệp CSV không dễ tạo như nó có vẻ. Tôi đã gặp rất nhiều vấn đề khi cố viết một trình phân tích cú pháp/ghi CSV nhanh.

Chỉ cần sử dụng OpenCSV và giải quyết tất cả sự cố của bạn ngay lập tức.

Sử dụng OpenCSV bạn có thể làm một cái gì đó như thế này:

CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t'); 
// feed in your array (or convert your data to an array) 
String[] entries = "first#second#third".split("#"); 
writer.writeNext(entries); 
1
  1. thử tuôn luồng của mình trước khi bạn đóng nó csvWriter.flush()
  2. thay vì sử dụng in, hãy thử println
1

Bạn chỉ cần để thay đổi csvWriter.print("world"); thành csvWriter.println("world");. Bản in tiếp theo sẽ nằm trong dòng mới tiếp theo.

public void writeData(String data,String strFilePath) 
      { 

       PrintWriter csvWriter; 
       try 
       { 

        File file = new File(strFilePath); 
        if(!file.exists()){ 
         file = new File(strFilePath); 
        } 
        csvWriter = new PrintWriter(new FileWriter(file,true)); 


        csvWriter.println(data+","+"hello"); 
        csvWriter.print("world"); 


        csvWriter.close(); 


       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
Các vấn đề liên quan