2009-10-23 20 views
9

Tôi gặp sự cố khi dán nội dung (hoặc văn bản) được tạo bởi mã Java vào excel. Vấn đề là mã Java của tôi tạo ra một Chuỗi có nhiều dòng, tức là có ngắt dòng (\n) được bao gồm. Khi tôi cố gắng sao chép nội dung này và dán nó vào một tệp Excel, tôi nhận được một văn bản nhiều dòng với một biểu tượng hộp vuông. Tôi đã biết rằng Windows sử dụng \r\n để ngắt dòng và không chỉ \n. Tôi đã cố gắng thay thế \n bằng \r\n và dán văn bản đã tạo, nhưng tôi nhận được cùng một hộp vuông trong tệp Excel của mình. Đây là mẫu mã của tôi:Làm thế nào để loại bỏ việc vận chuyển trở lại từ chuỗi trong khi dán nội dung vào tệp Excel

 String myString = "a1\nb1"; 
     String tmpString =myString.replace("\n","\r\n"); 
     System.out.println("Original = " +"\""+myString+"\""); 
     System.out.println("Result = " +"\""+tmpString+"\""); 

Tôi đã sử dụng các "" để bọc các văn bản. Khi tôi cố gắng dán tmpstring trong Excel, tôi nhận được hộp vuông. Làm cách nào để xóa các hộp có số dòng trong ô của tôi?

+0

Đối với một cái gì đó như "ABC \ N12", để bạn có được một hộp duy nhất ở cuối hoặc sau mỗi dòng? – A9S6

Trả lời

41

Bạn có muốn trả lại xe/tuyến mới hay không? Tiêu đề của bạn nói rằng bạn không, mã của bạn rõ ràng là thêm trả về vận chuyển khi chuỗi có một dòng mới. Nếu bạn muốn thoát khỏi cả hai, sử dụng String.replaceAll(), trong đó có một regex:

public static void main(String[] argv) 
throws Exception 
{ 
    String s1 = "this\r\nis a test"; 
    String s2 = s1.replaceAll("[\n\r]", ""); 
    System.out.println(s2); 
} 

Ví dụ này tìm thấy bất kỳ sự xuất hiện của các nhân vật, và xóa chúng. Bạn có thể muốn tìm chuỗi ký tự và thay thế bằng một khoảng trắng, nhưng tôi sẽ để điều đó tùy thuộc vào bạn: xem tài liệu cho java.util.regex.Pattern.

Và tôi nghi ngờ rằng "hộp" là một số ký tự khác, không phải trả lại hoặc dòng mới.

+0

Cảm ơn bạn đã trả lời ur.when thử mã được đăng bởi u, nó cũng loại bỏ các dòng đa trong văn bản của tôi khi tôi dán nó trong excel mà tôi không muốn làm. Và hộp trả về một giá trị ascii 10 khi tôi kiểm tra nó như là một ký tự – chaithu

+1

+1 - Một bài cũ cho bạn nhưng một giải pháp hữu ích cho tôi :) Cảm ơn! –

+0

phải là '[\ r \ n]' trong dòng: 'Chuỗi s2 = s1.replaceAll ("[\ n \ r]", ""); ' –

0

Tại sao bạn không sao chép và dán như bình thường, sau đó thực hiện tìm kiếm và thay thế tại Excel?

+0

Tôi phải sao chép một chương trình textmaticaly vào clipboard và sau đó dán nó vào excel.Here tôi đã đề cập chỉ có một mẫu mã.Tôi không nên nhận được những hộp văn bản khi tôi dán – chaithu

0

Nếu nó là bất kỳ sự giúp đỡ, tôi chạy dòng mã này (C#)

Clipboard.SetText("1\n2\r\n3"); 

và sau đó Ctrl-V trong Excel và 3 tế bào bị đầy A1 có 1, A2 có 2 và A3 có 3 Điều này có nghĩa là \ n và \ r \ n được xử lý như mong đợi bởi Excel. Các chuỗi Java chứa \ n và \ r \ n cũng sẽ hoạt động. Điều này khiến tôi tin vào điều gì đó với cài đặt ô Excel. Kiểm tra xem các ô có được định dạng là văn bản hay không.

Ngoài ra, không có ý tưởng, xin lỗi.

+0

Cảm ơn bạn đã trả lời ur – chaithu

0
class Test { 
    public static void main(String args[]) 
    System.out.print("Hello\rHi"); 
} 

Do \ r di chuyển con trỏ để bắt đầu dòng hiện tại, vì vậy "Anh ấy" của Hello được thay thế bằng "Xin chào".

0

Hãy thử điều này =)

String s1 = "this\r\nis a test"; 
String s2 = s1.replaceAll("(\\r|\\n)", ""); 
System.out.println(s2); 
Các vấn đề liên quan