C# 프로그램에서 워드 문서를 만들고 편집하는 방법
개요
C# 프로그램에서 Microsoft Word 문서를 작성, 편집, 저장하는 방법을 살펴보았으므로 샘플 코드를 게재합니다.
준비
프로젝트에 참조를 추가해야 합니다.
솔루션 탐색기의 참조 추가에서 Microsoft.Office.Interop.Word를 추가합니다.
(항목을 찾을 수 없으면 검색 대화 상자 오른쪽 상단의 검색 막대에 "Word"라든지 넣으면 나옵니다)
샘플 코드
이하에 게재하는 것은,
와 같은 워드 파일 (out.docx) 을 실행 파일과 같은 디렉토리에 작성하기 위한 샘플 코드입니다.
코드 자체는 그리 어렵지 않다고 생각합니다.
내가 이해한 범위에서는, Document 오브젝트를 편집할 때는 Document 오브젝트로부터 여러가지 방법으로 Range 를 추출해 편집 조작을 실시하게 되어 있는 것 같습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Word;
using Word = Microsoft.Office.Interop.Word;
namespace WordSample
{
class Program
{
static void Main(string[] args)
{
try
{
// Word アプリケーションオブジェクトを作成
Word.Application word = new Word.Application();
// Word の GUI を起動しないようにする
word.Visible = false;
// 新規文書を作成
Document document = word.Documents.Add();
// ヘッダーを編集
editHeaderSample(ref document, 10, WdColorIndex.wdPink, "Header Area");
// フッターを編集
editFooterSample(ref document, 10, WdColorIndex.wdBlue, "Footer Area");
// 見出しを追加
addHeadingSample(ref document, "見出し");
// パラグラフを追加
document.Content.Paragraphs.Add();
// テキストを追加
addTextSample(ref document, WdColorIndex.wdGreen, "Hello, ");
addTextSample(ref document, WdColorIndex.wdRed, "World");
// 名前を付けて保存
object filename = System.IO.Directory.GetCurrentDirectory() + @"\out.docx";
document.SaveAs2(ref filename);
// 文書を閉じる
document.Close();
document = null;
word.Quit();
word = null;
Console.WriteLine("Document created successfully !");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// 文書のヘッダーを編集する.
/// </summary>
private static void editHeaderSample(ref Document document, int fontSize, WdColorIndex color, string text)
{
foreach (Section section in document.Sections)
{
//Get the header range and add the header details.
Range headerRange = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
headerRange.Fields.Add(headerRange, WdFieldType.wdFieldPage);
headerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
headerRange.Font.ColorIndex = color;
headerRange.Font.Size = fontSize;
headerRange.Text = text;
}
}
/// <summary>
/// 文書のフッターを編集する.
/// </summary>
private static void editFooterSample(ref Document document, int fontSize, WdColorIndex color, string text)
{
foreach (Section wordSection in document.Sections)
{
//Get the footer range and add the footer details.
Range footerRange = wordSection.Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
footerRange.Font.ColorIndex = color;
footerRange.Font.Size = fontSize;
footerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
footerRange.Text = text;
}
}
/// <summary>
/// 文書に見出しを追加する.
/// </summary>
private static void addHeadingSample(ref Document document, string text)
{
Paragraph para = document.Content.Paragraphs.Add(System.Reflection.Missing.Value);
object styleHeading1 = "見出し 1";
para.Range.set_Style(ref styleHeading1);
para.Range.Text = text;
para.Range.InsertParagraphAfter();
}
/// <summary>
/// 文書の末尾位置を取得する.
/// </summary>
/// <returns></returns>
private static int getLastPosition(ref Document document)
{
return document.Content.End - 1;
}
/// <summary>
/// 文書の末尾にテキストを追加する.
/// </summary>
private static void addTextSample(ref Document document, WdColorIndex color, string text)
{
int before = getLastPosition(ref document);
Range rng = document.Range(document.Content.End - 1, document.Content.End - 1);
rng.Text += text;
int after = getLastPosition(ref document);
document.Range(before, after).Font.ColorIndex = color;
}
}
}
Reference
이 문제에 관하여(C# 프로그램에서 워드 문서를 만들고 편집하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_meki/items/ef064d8861bda4363562
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
프로젝트에 참조를 추가해야 합니다.
솔루션 탐색기의 참조 추가에서 Microsoft.Office.Interop.Word를 추가합니다.
(항목을 찾을 수 없으면 검색 대화 상자 오른쪽 상단의 검색 막대에 "Word"라든지 넣으면 나옵니다)
샘플 코드
이하에 게재하는 것은,
와 같은 워드 파일 (out.docx) 을 실행 파일과 같은 디렉토리에 작성하기 위한 샘플 코드입니다.
코드 자체는 그리 어렵지 않다고 생각합니다.
내가 이해한 범위에서는, Document 오브젝트를 편집할 때는 Document 오브젝트로부터 여러가지 방법으로 Range 를 추출해 편집 조작을 실시하게 되어 있는 것 같습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Word;
using Word = Microsoft.Office.Interop.Word;
namespace WordSample
{
class Program
{
static void Main(string[] args)
{
try
{
// Word アプリケーションオブジェクトを作成
Word.Application word = new Word.Application();
// Word の GUI を起動しないようにする
word.Visible = false;
// 新規文書を作成
Document document = word.Documents.Add();
// ヘッダーを編集
editHeaderSample(ref document, 10, WdColorIndex.wdPink, "Header Area");
// フッターを編集
editFooterSample(ref document, 10, WdColorIndex.wdBlue, "Footer Area");
// 見出しを追加
addHeadingSample(ref document, "見出し");
// パラグラフを追加
document.Content.Paragraphs.Add();
// テキストを追加
addTextSample(ref document, WdColorIndex.wdGreen, "Hello, ");
addTextSample(ref document, WdColorIndex.wdRed, "World");
// 名前を付けて保存
object filename = System.IO.Directory.GetCurrentDirectory() + @"\out.docx";
document.SaveAs2(ref filename);
// 文書を閉じる
document.Close();
document = null;
word.Quit();
word = null;
Console.WriteLine("Document created successfully !");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// 文書のヘッダーを編集する.
/// </summary>
private static void editHeaderSample(ref Document document, int fontSize, WdColorIndex color, string text)
{
foreach (Section section in document.Sections)
{
//Get the header range and add the header details.
Range headerRange = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
headerRange.Fields.Add(headerRange, WdFieldType.wdFieldPage);
headerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
headerRange.Font.ColorIndex = color;
headerRange.Font.Size = fontSize;
headerRange.Text = text;
}
}
/// <summary>
/// 文書のフッターを編集する.
/// </summary>
private static void editFooterSample(ref Document document, int fontSize, WdColorIndex color, string text)
{
foreach (Section wordSection in document.Sections)
{
//Get the footer range and add the footer details.
Range footerRange = wordSection.Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
footerRange.Font.ColorIndex = color;
footerRange.Font.Size = fontSize;
footerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
footerRange.Text = text;
}
}
/// <summary>
/// 文書に見出しを追加する.
/// </summary>
private static void addHeadingSample(ref Document document, string text)
{
Paragraph para = document.Content.Paragraphs.Add(System.Reflection.Missing.Value);
object styleHeading1 = "見出し 1";
para.Range.set_Style(ref styleHeading1);
para.Range.Text = text;
para.Range.InsertParagraphAfter();
}
/// <summary>
/// 文書の末尾位置を取得する.
/// </summary>
/// <returns></returns>
private static int getLastPosition(ref Document document)
{
return document.Content.End - 1;
}
/// <summary>
/// 文書の末尾にテキストを追加する.
/// </summary>
private static void addTextSample(ref Document document, WdColorIndex color, string text)
{
int before = getLastPosition(ref document);
Range rng = document.Range(document.Content.End - 1, document.Content.End - 1);
rng.Text += text;
int after = getLastPosition(ref document);
document.Range(before, after).Font.ColorIndex = color;
}
}
}
Reference
이 문제에 관하여(C# 프로그램에서 워드 문서를 만들고 편집하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_meki/items/ef064d8861bda4363562
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Word;
using Word = Microsoft.Office.Interop.Word;
namespace WordSample
{
class Program
{
static void Main(string[] args)
{
try
{
// Word アプリケーションオブジェクトを作成
Word.Application word = new Word.Application();
// Word の GUI を起動しないようにする
word.Visible = false;
// 新規文書を作成
Document document = word.Documents.Add();
// ヘッダーを編集
editHeaderSample(ref document, 10, WdColorIndex.wdPink, "Header Area");
// フッターを編集
editFooterSample(ref document, 10, WdColorIndex.wdBlue, "Footer Area");
// 見出しを追加
addHeadingSample(ref document, "見出し");
// パラグラフを追加
document.Content.Paragraphs.Add();
// テキストを追加
addTextSample(ref document, WdColorIndex.wdGreen, "Hello, ");
addTextSample(ref document, WdColorIndex.wdRed, "World");
// 名前を付けて保存
object filename = System.IO.Directory.GetCurrentDirectory() + @"\out.docx";
document.SaveAs2(ref filename);
// 文書を閉じる
document.Close();
document = null;
word.Quit();
word = null;
Console.WriteLine("Document created successfully !");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// 文書のヘッダーを編集する.
/// </summary>
private static void editHeaderSample(ref Document document, int fontSize, WdColorIndex color, string text)
{
foreach (Section section in document.Sections)
{
//Get the header range and add the header details.
Range headerRange = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
headerRange.Fields.Add(headerRange, WdFieldType.wdFieldPage);
headerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
headerRange.Font.ColorIndex = color;
headerRange.Font.Size = fontSize;
headerRange.Text = text;
}
}
/// <summary>
/// 文書のフッターを編集する.
/// </summary>
private static void editFooterSample(ref Document document, int fontSize, WdColorIndex color, string text)
{
foreach (Section wordSection in document.Sections)
{
//Get the footer range and add the footer details.
Range footerRange = wordSection.Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
footerRange.Font.ColorIndex = color;
footerRange.Font.Size = fontSize;
footerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
footerRange.Text = text;
}
}
/// <summary>
/// 文書に見出しを追加する.
/// </summary>
private static void addHeadingSample(ref Document document, string text)
{
Paragraph para = document.Content.Paragraphs.Add(System.Reflection.Missing.Value);
object styleHeading1 = "見出し 1";
para.Range.set_Style(ref styleHeading1);
para.Range.Text = text;
para.Range.InsertParagraphAfter();
}
/// <summary>
/// 文書の末尾位置を取得する.
/// </summary>
/// <returns></returns>
private static int getLastPosition(ref Document document)
{
return document.Content.End - 1;
}
/// <summary>
/// 文書の末尾にテキストを追加する.
/// </summary>
private static void addTextSample(ref Document document, WdColorIndex color, string text)
{
int before = getLastPosition(ref document);
Range rng = document.Range(document.Content.End - 1, document.Content.End - 1);
rng.Text += text;
int after = getLastPosition(ref document);
document.Range(before, after).Font.ColorIndex = color;
}
}
}
Reference
이 문제에 관하여(C# 프로그램에서 워드 문서를 만들고 편집하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/_meki/items/ef064d8861bda4363562텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)