Создание Word Dcoument в коде за C # - PullRequest
0 голосов
/ 21 февраля 2012

Я использовал пример от Microsoft о том, как создать документ Word из кода позади.Я реализовал этот код в простой веб-части, чтобы сначала протестировать его.У меня есть кнопка, которая при нажатии создает документ Word, но в настоящее время ничего не происходит при нажатии кнопки.Я не уверен, что мне здесь не хватает, поэтому я надеюсь, что кто-то может дать представление, ниже приведен код, который у меня есть: (Я просто перечислю импортируемые детали


using Microsoft.Office.Core;
using Microsoft.Office.Server; //for use when creatigna   writing data to a MS  
                               //Word  Document
using Microsoft.Office.Interop.Word; //for use when creatigna   writing data to a MS 
                                     //Word Documenr
using Word = Microsoft.Office.Interop.Word; //for use when creatign and  writing data 
                                            //to a MS Word Document
using System.Reflection;

namespace Kemp.SP2010.Badges.Badges
{
public partial class BadgesUserControl : UserControl
{




protected void Page_Load(object sender, EventArgs e)
{

GenerateBadges.Click += new EventHandler(GenerateBadges_Click);

}



//button to create the badges
void GenerateBadges_Click(object sender, System.EventArgs e)
{


#region Create Table in MS Word Document


object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc"; 

//Start word and create a new document
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;

oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);


//Creating  a paragraph at the beginning of the document
Word.Paragraph oPara1;
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
oPara1.Range.Text = "Heading 1";
oPara1.Range.Font.Bold = 1;
oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph
oPara1.Range.InsertParagraphAfter();

//Creating an 2x8 table
Word.Table oTable;
Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oTable = oDoc.Tables.Add(wrdRng, 2, 8, ref oMissing, ref oMissing);
oTable.Range.ParagraphFormat.SpaceAfter = 6;

//for loop
int r,c;
string strText;
for (r = 1; r <= 2; r++)
for (c = 1; c <= 8; c++)
{

strText = "r" + r +"c" + c;
oTable.Cell(r, c).Range.Text = strText;

}

oTable.Rows[1].Range.Font.Bold = 1;
oTable.Rows[1].Range.Font.Italic = 1;

#endregion
}
}
}

ИВот веб-часть с кнопкой

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral,   
PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" 
Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, 
PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" 
Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, 
PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" 
Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %> 
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" 
Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, 
PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" 
CodeBehind="BadgesUserControl.ascx.cs" 
Inherits="Kemp.SP2010.Badges.Badges.BadgesUserControl" %>

<!--Button to generate the Badges in a MS Word Document-->

<tr>
<td valign="top" width="100%">

<asp:Button ID="GenerateBadges" runat="server" Text="Generate Badges" />

</td>
</tr>
</table>

Теоретически это должно создать документ Word с абзацем и таблицей при выборе кнопки. Но, как упоминалось ранее, ничего не происходит.

Любые предложения будут высоко оценены.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Вам следует использовать Open XML Format .Он работает только с документами DOCX, но очень прост, когда речь идет о создании документов Office Word или работе с документами Word

0 голосов
/ 21 февраля 2012

Подумайте о борьбе с библиотеками Open Document от Microsoft .У них ужасный API, но:

  • Может создавать файлы docx, которые имеют собственный формат, поддерживаемый MS Word 2007 +
  • Не требуют установки MS Word (на самом деле это 100% .NET code).
  • Фактически поддерживает большинство версий слова через пакет совместимости (их можно открыть в Word 2000 или более поздней версии).
  • Также доступныподдерживается последними версиями Open Office
...