2011-10-13 23 views
1

我想我的格式.doc文件,因为当我retrive信息和保存使用Open XML SDK中的.doc格式,所有信息的文件仅仅是一个插入一个空行行,我需要其他行的一些信息,只是为了格式化。我怎样才能使用的Open XML SDK

我该怎么做?

这是我的方法建立一个名为.doc

private static void BuildDocument(string fileName, string id, string conteudo) 
     { 
      Utilidade.QuebraToken tk2 = new Utilidade.QuebraToken(); 

      ////id = id.Remove(id.Length - 1); 

      string select3 = "SELECT San_Imovel.TextoAnuncio, San_Imovel.Filial_Id, San_Imovel.NomeBairro,San_Imovel.TipoDsc1,San_Imovel.Imovel_Id,San_Filial.NomeFantasia ,San_ContatoFilial.Contato " + 
               "FROM San_Imovel " + 
               "JOIN San_Filial ON San_Imovel.Filial_Id = San_Filial.Filial_id " + 
               "JOIN San_ContatoFilial ON San_Filial.Filial_Id = San_ContatoFilial.Filial_Id " + 
               "WHERE Imovel_Id IN (" + id + ") " + 
               " AND San_ContatoFilial.TipoContatoFilial_Id = 1";  

      using (WordprocessingDocument w = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document)) 
      { 
       MainDocumentPart mp = w.AddMainDocumentPart(); 
       DocumentFormat.OpenXml.Wordprocessing.Document d = new DocumentFormat.OpenXml.Wordprocessing.Document(); 
       Body b = new Body(); 
       DocumentFormat.OpenXml.Wordprocessing.Paragraph p = new DocumentFormat.OpenXml.Wordprocessing.Paragraph(); 
       Run r = new Run(); 
       Text t = new Text(); 
       t.Text = conteudo; 
       r.Append(t); 
       p.Append(r); 
       b.Append(p); 
       HeaderPart hp = mp.AddNewPart<HeaderPart>(); 
       string headerRelationshipID = mp.GetIdOfPart(hp); 
       SectionProperties sectPr = new SectionProperties(); 
       HeaderReference headerReference = new HeaderReference(); 
       headerReference.Id = headerRelationshipID; 
       headerReference.Type = HeaderFooterValues.Default; 
       sectPr.Append(headerReference); 
       b.Append(sectPr); 
       d.Append(b); 
       hp.Header = BuildHeader(hp, "Anuncio"); 
       hp.Header.Save(); 
       mp.Document = d; 
       mp.Document.Save(); 
       w.Close(); 
      } 
     } 

在这里,我把这种方法

public static object GerarDoc(string id, string email, string veiculo) 
     { 
      try 
      { 

      id = id.Remove(id.Length - 1); 

      string conteudo = string.Empty; 

      string select3 = "SELECT San_Imovel.TextoAnuncio, San_Imovel.Filial_Id, San_Imovel.NomeBairro,San_Imovel.TipoDsc1,San_Imovel.Imovel_Id,San_Filial.NomeFantasia ,San_ContatoFilial.Contato " + 
               "FROM San_Imovel                                                                                            " + 
               "INNER JOIN San_Filial ON San_Imovel.Filial_Id = San_Filial.Filial_id                                                                  " + 
               "INNER JOIN San_ContatoFilial ON San_Filial.Filial_Id = San_ContatoFilial.Filial_Id                                                               " + 
               "WHERE Imovel_Id IN (" + id + ")                                                                                        " + 
               "AND San_ContatoFilial.TipoContatoFilial_Id = 1                                                                                ";    

      Utilidade.Conexao c3 = new Utilidade.Conexao(); 
      SqlConnection con3 = new SqlConnection(c3.Con); 
      SqlCommand cmd3 = new SqlCommand(select3, con3); 
      con3.Open(); 
      SqlDataReader r3 = cmd3.ExecuteReader(); 
      while (r3.Read()) 
      { 
       conteudo = conteudo + "" + (r3["Contato"]) + "";     
       conteudo = conteudo + "\n"+ (r3["NomeBairro"]); 
       conteudo = conteudo + "\n" + (r3["TipoDsc1"]) ; 
       conteudo = conteudo + "\n" + (r3["NomeFantasia"]) + " (" + (r3["Imovel_Id"]) + ") " + (r3["TextoAnuncio"]) + "\n\n"; 
      }    
      con3.Close(); 

       Random rnd = new Random (DateTime.Now.Millisecond); 

       string NomeArquivo = "Anuncio_" + Credenciada + "_" + Usuario + "_" + rnd.Next().ToString();     
       rng.Font.Name = "Arial";      
       rng.Text = conteudo; 

       BuildDocument(@"C:\inetpub\wwwroot\galileu.redenetimoveis.com\Anuncios\" + NomeArquivo + ".doc", id, rng.Text); 

       retorno = "1";     
      }  

     } 
+0

文本T =新文本(); t.Text = conteudo; r.Append(新CarriegeReturn()); r.Append(t); –

回答

2

您可以简单地创建一个有休息对象运行并插入此运行在您的代码中,每次需要分页符时,请参阅下面的示例:

using (WordprocessingDocument package = WordprocessingDocument.Create("D:\\LineBreaks.docx", WordprocessingDocumentType.Document)) 
{ 
    package.AddMainDocumentPart(); 

    Run run1 = new Run(); 
    Text text1 = new Text("The quick brown fox"); 
    run1.Append(text1); 

    Run lineBreak = new Run(new Break()); 

    Run run2 = new Run(); 
    Text text2 = new Text("jumps over a lazy dog"); 
    run2.Append(text2); 

    Paragraph paragraph = new Paragraph(); 
    paragraph.Append(new OpenXmlElement[] { run1, lineBreak, run2 }); 

    Body body = new Body(); 
    body.Append(paragraph); 

    package.MainDocumentPart.Document = new Document(new Body(body)); 
} 
+0

我也有类似的需求,只是想指出的是您可以创建一个运行变量,并追加许多文字和打破元素到此运行变量,然后追加(runVar)。您不需要创建run1和run2。你的回答帮助了我,谢谢。 –

1

创建您所需的文档手动,然后反映它使用Open XML生产力工具。所以你可以找到你需要做的。