リストからMicrosoft.Office.Interop.Wordを使用して.docxドキュメントを作成するにはどうすればよいですか?または最良の方法はdocx.dllを追加することですか?
更新。私の最初の質問は少し間違っているかもしれません。 Microsoft.Office.Interop.WordとDocX.dllの違いは何ですか?どちらの場合も、.docxドキュメントを作成して開くためにMicrosft Wordが必要ですか?
インストール後 OpenXML SDKDocumentFormat.OpenXml
アセンブリを参照できるようになります:Add Reference
-> Assemblies
-> Extensions
-> DocumentFormat.OpenXml
。また、WindowsBase
を参照する必要があります。
たとえば、次のようにドキュメントを生成できるようになります。
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace MyNamespace
{
class Program
{
static void Main(string[] args)
{
using (var document = WordprocessingDocument.Create(
"test.docx", WordprocessingDocumentType.Document))
{
document.AddMainDocumentPart();
document.MainDocumentPart.Document = new Document(
new Body(new Paragraph(new Run(new Text("some text")))));
}
}
}
}
また、生産性向上ツール(同じリンク)を使用して、ドキュメントからコードを生成することもできます。 SDKAPIの操作方法を理解するのに役立ちます。
相互運用機能でも同じことができます。
using System.Reflection;
using Microsoft.Office.Interop.Word;
using System.Runtime.InteropServices;
namespace Interop1
{
class Program
{
static void Main(string[] args)
{
Application application = null;
try
{
application = new Application();
var document = application.Documents.Add();
var paragraph = document.Paragraphs.Add();
paragraph.Range.Text = "some text";
string filename = GetFullName();
application.ActiveDocument.SaveAs(filename, WdSaveFormat.wdFormatDocument);
document.Close();
}
finally
{
if (application != null)
{
application.Quit();
Marshal.FinalReleaseComObject(application);
}
}
}
}
}
ただし、この場合、COMタイプライブラリMicrosoftを参照する必要があります。 Wordオブジェクトライブラリ。
COM相互運用機能について非常に便利な点は次のとおりです。 Excel相互運用機能オブジェクトを適切にクリーンアップするにはどうすればよいですか?
Microsoft相互運用オフィスを使用したくない場合は
私は本当にこれが好きだった
//Add reference DocX.dll
using Novacode;
// reference to the working document.
static DocX gDocument;
public void CreateWithOpenDoc(string _fileName, string _saveAs, int _LeadNo)
{
if (File.Exists(_fileName))
{
gDocument = DocX.Load(_fileName);
//--------------------- Make changes -------------------------------
// Strong-Type
Dictionary<string, string> changesList = GetChangesList(_LeadNo, dt.Rows[0]);
foreach (KeyValuePair<string, string> keyValue in changesList)
{
gDocument.ReplaceText(keyValue.Key.ToString().Trim(), keyValue.Value.ToString().Trim(), false);
}
//------------------------- End of make changes ---------------------
gDocument.SaveAs(_saveAs);
}
}
参照してください Cシャープコーナー
Office 2016相互運用オブジェクトにアクセスする方法がわからない場合は、リンク( https://social.msdn.Microsoft.com/Forums/vstudio/en-US/55fe7d16-998b-4c43-9746-45ff35310158/office-2016-interop-assemblies?forum = exceldev )が役に立ちます。
この後、@ EvgenyTimoshenkoの例を試すことができます。
class Program
{
static void Main(string[] args)
{
Application application = null;
try
{
application = new Application();
var document = application.Documents.Add();
var paragraph = document.Paragraphs.Add();
paragraph.Range.Text = "some text";
string filename = GetFullName();
application.ActiveDocument.SaveAs(filename, WdSaveFormat.wdFormatDocument);
document.Close();
}
finally
{
if (application != null)
{
application.Quit();
Marshal.FinalReleaseComObject(application);
}
}
}
}