Проблема записи содержимого HTML в документ Word в ASP.NET - PullRequest
5 голосов
/ 29 апреля 2009

Я пытаюсь экспортировать содержимое HTML-страницы в Word.

Моя страница отображения Html:

  1. Какой твой любимый цвет?

NA

  1. Список трех лучших школ?

один национальный два разработчика три PS

И кнопка для события клика. Событие нажатия кнопки откроет MS word и вставит содержимое страницы в слово.

Слово page содержит свойство table страницы html design. Это происходит только в Word 2003. Но в Word 2007 текстовый документ содержит текст без табличного свойства. Как я могу удалить это свойство таблицы в Word 2003.

Я не могу добавить снимки. Иначе я разъясню тебе.

Я разрабатываю веб-страницу с помощью aspx. Я экспортирую содержимое веб-страницы с помощью следующего кода.

protected void Button1_Click(object sender, EventArgs e)
{

    Response.ContentEncoding = System.Text.Encoding.UTF7;
    System.Text.StringBuilder SB = new System.Text.StringBuilder();
    System.IO.StringWriter SW = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlTW = new System.Web.UI.HtmlTextWriter(SW);
    tbl.RenderControl(htmlTW);
    string strBody = "<html>" +
        "<body>" + "<div><b>" + htmlTW.InnerWriter.ToString() + "</b></div>" +
        "</body>" +
        "</html>";

    Response.AppendHeader("Content-Type", "application/msword");
    Response.AppendHeader("Content-disposition", "attachment; filename=" + fileName);
    Response.ContentEncoding = System.Text.Encoding.UTF7;

    string fileName1 = "C://Temp/Excel" + DateTime.Now.Millisecond.ToString();
    BinaryWriter writer = new BinaryWriter(File.Open(fileName1, FileMode.Create));
    writer.Write(strBody);
    writer.Close();
    FileStream fs = new FileStream(fileName1, FileMode.Open, FileAccess.Read);
    byte[] renderedBytes;
    // Create a byte array of file stream length 
    renderedBytes = new byte[fs.Length];
    //Read block of bytes from stream into the byte array 
    fs.Read(renderedBytes, 0, System.Convert.ToInt32(fs.Length));
    //Close the File Stream 
    fs.Close();
    FileInfo TheFile = new FileInfo(fileName1);
    if (TheFile.Exists)
    {
        File.Delete(fileName1);
    }
    Response.BinaryWrite(renderedBytes);

    Response.Flush();
    Response.End();
}

Ответы [ 4 ]

1 голос
/ 18 ноября 2014

Вы пишете HTML, утверждая, что он имеет тип контента "application / msword", а затем надеетесь на лучшее ..

Есть более «правильные» способы достижения вашей цели.

Существует несколько проектов конвертации (X) HTML в контент WordML, из которых docx4j-ImportXHTML.NET - один Раскрытие: я утверждаю это; Вы можете найти ссылки на другие страницы здесь, на StackOverflow.

В качестве альтернативы, вы можете использовать механизм Word altChunk, хотя примечание:

  • у вас меньше контроля над выполнением импорта;
  • AltChunk не поддерживается Word 2003 (даже с пакетом совместимости).
0 голосов
/ 18 ноября 2014

Насколько я понимаю, вы пытаетесь создать документ MS Word на лету и испытываете трудности при просмотре вывода в Word 2003 против 2007.

В приведенном выше коде вы просто выплевываете html и заставляете его быть документом в формате MS Word. Я удивлен, что это даже работает.

Вместо этого вы можете использовать Office Interop (Microsoft.Office.Interop.Word) или установить DocX с помощью nuget. Посмотрите на некоторые примеры в Интернете, найдите "C # create word doc".

0 голосов
/ 30 июня 2009

Вы также можете попытаться создать документ Open XML, который теперь распознается MS Office. Вот еще немного информации с примерами кода: http://msdn.microsoft.com/en-us/library/bb656295.aspx

0 голосов
/ 29 апреля 2009

Вопрос не ясен.

Эти ссылки могут помочь вам понять автоматизацию MSWord-C #:

http://www.codeproject.com/KB/cs/Simple_Ms_Word_Automation.aspx

http://www.c -sharpcorner.com / UploadFile / amrish_deep / WordAutomation05102007223934PM / WordAutomation.aspx

...