2010-05-20 43 views
43

Tôi đang sử dụng WordXcessingDocument openxml để mở mẫu Word và thay thế trình giữ chỗ x1 bằng một chuỗi. Điều này làm việc tốt trừ khi tôi cần chuỗi để chứa một dòng mới. Làm cách nào để thay thế x1 bằng văn bản có thể chứa các dòng mới mà từ đó sẽ nhận ra? Tôi đã thử \ n \ r nhưng những điều này không hoạt độngChèn dòng mới vào Word bằng cách sử dụng OpenXML

Chỉ cần giải thích thêm khi mẫu từ được mở, tôi đọc nó vào StreamReader rồi sử dụng. Thay thế để thay thế x1.

+1

Nó không tuyệt vời nhưng: '.Replace (Environment.NewLine," ")' có thể phù hợp với bạn. – BrainSlugs83

+0

@ BrainSlugs83: Bất kỳ ý tưởng nào về điều này? http://stackoverflow.com/questions/26307691 – slayernoah

Trả lời

68

Để chèn dòng mới, bạn phải thêm một thể hiện Break vào Run.

Ví dụ:

run.AppendChild(new Text("Hello")); 
run.AppendChild(new Break()); 
run.AppendChild(new Text("world")); 

XML sản xuất sẽ là một cái gì đó như:

<w:r> 
    <w:t>Hello</w:t> 
    <w:br/> 
    <w:t>world</w:t> 
</w:r> 
+0

Tôi không nghĩ rằng tôi có thể sử dụng câu trả lời của bạn trong tình huống của tôi. Tôi đã cập nhật câu hỏi của mình để giải thích thêm – Danny

+0

Vì vậy, bạn đang làm việc trực tiếp với XML? Trong trường hợp đó, hãy thử chèn XML như ví dụ. – codeape

+2

Bạn có thể làm cho nó hoạt động không? – codeape

17

Dưới đây là một # chức năng C sẽ đưa một chuỗi, chia nó trên ngắt dòng và làm cho nó trong OpenXML. Để sử dụng, khởi tạo một Chạy và chuyển nó vào hàm bằng một chuỗi.

void parseTextForOpenXML(Run run, string textualData) 
{ 
    string[ ] newLineArray = { Environment.NewLine }; 
    string[ ] textArray = textualData.Split(newLineArray, StringSplitOptions.None); 

    bool first = true; 

    foreach (string line in textArray) 
    { 
     if (! first) 
     { 
      run.Append(new Break()); 
     } 

     first = false; 

     Text txt = new Text(); 
     txt.Text = line; 
     run.Append(txt); 
    } 
+1

niceeeee, cảm ơn rất nhiều, tôi sử dụng giải pháp này khi chuỗi của tôi chứa \ n \ r – jiji2663

7

Tôi gặp vấn đề tương tự và trong trường hợp của mình, thẻ <w:br /> đã hoạt động.

+0

Làm việc như một sự quyến rũ! Cảm ơn rất nhiều! – BertuPG

7

Altough câu hỏi này đã được trả lời tôi có cách tiếp cận khác để giải quyết những câu hỏi như:

Làm thế nào tôi có thể làm cho XXX với OpenXML ??

Trong trường hợp này, bạn có thể tận dụng các mạnh Microsoft OpenXML công cụ năng suất (còn gọi là OpenXmlSdkTool). Download here.

  1. Tạo một tài liệu văn phòng mới
  2. Thêm phần vào tài liệu mà bạn muốn để tái tạo với OpenXML SDK.
  3. Mở tài liệu văn phòng với Microsoft OpenXML công cụ năng suất
  4. Bấm vào "Reflect Code"
  5. Ở bên phải bạn sẽ thấy bây giờ bạn có tài liệu phản ánh vào C# mã.
+0

Đây là một câu trả lời tuyệt vời! Tôi đã được sau khi làm việc ra một số bit xml mở khó khăn và đã phải google hoạt động bên trong của hầu hết các yếu tố.Có một công cụ có thể xuất ra các bit lừa và dán chúng vào là một lần tiết kiệm thời gian lớn, cảm ơn. – dougajmcdonald

Các vấn đề liên quan