필수 DocIO
Microsoft Word 파일을 읽고 쓸 수 있는 .NET 라이브러리입니다. 이 구성 요소는 Microsoft Office COM 클래스 라이브러리와 유사한 개체 모델이며 COM 상호 운용성을 사용하지 않으며 C#으로 작성되었습니다. Microsoft Word가 시스템에 설치되어 있지 않은 경우 이 구성 요소를 고려할 수 있습니다.
새 MS Word 문서 만들기: 텍스트, 그림, 차트, 페이지 및 바닥글이 포함된 MS Word 문서 만들기를 지원합니다.
문서 형식: 범용 MS Word 보고서 형식을 지원합니다.
문서 생성은 템플릿을 기반으로 합니다. 템플릿을 기반으로 문서를 생성하려면 MS Word GUI를 사용하여 문서 보고서를 디자인한 다음 DocIO를 사용하여 템플릿 파일에 데이터를 동적으로 채울 수 있습니다.
문서 속성: Word 문서의 속성 설정을 읽고 씁니다.
변환: Essential PDF를 사용하여 MS Word 문서를 PDF로 변환하는 것을 지원합니다.
고급 기능: 여러 MS Word 문서를 단일 문서로 복사하고 병합하는 기능을 지원합니다.
HTML을 단어로 변환
공개 정적 바이트[] ConvertHtmlToDoc(string html)
{
var document = new WordDocument();
IWSection 섹션 = document.AddSection();
IWParagraph para = section.AddParagraph();
문자열 errorMessage = "";
bool valid = section.Body.IsValidXHTML(html, XHTMLValidationType.Strict, out errorMessage);
만약 (!유효)
throw new InvalidCastException(errorMessage + "<hr>" + html);
document.XHTMLValidateOption = XHTMLValidationType.Strict;
section.Body.InsertXHTML(html);
var outMem = new MemoryStream();
document.Save(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
var content = 새 바이트[outMem.Length];
outMem.Read(content, 0, content.Length);
outMem.Dispose();
document.Close();
콘텐츠 반환;
}
Word 생성 시 지정된 텍스트 바꾸기
/// <요약>
/// Word를 생성할 때 지정된 텍스트를 바꿉니다.
/// </summary>
/// <param name="templatePath"></param>
/// <param name="파일 이름"></param>
/// <param name="replaysDictionary"></param>
공개 정적 무효 RecDocContent(문자열 templateFileName, 문자열 newFileName,
사전<문자열, 문자열> replaysDictionary)
{
IWordDocument 문서 = 새 WordDocument();
document.Open(templateFileName, FormatType.Doc);
foreach(replaysDictionary의 var rd)
{
if (string.IsNullOrEmpty(document.GetText())) 계속;
document.Replace(rd.Key, rd.Value, false, false);
while (document.GetText().IndexOf(rd.Key) != -1)
document.Replace(rd.Key, rd.Value, false, false);
}
document.Save(newFileName, FormatType.Doc);
}
비밀번호로 문서를 보호하세요
공개 정적 스트림 SetDocProtect(byte[] docContent, 문자열 키)
{
var mem = new MemoryStream(docContent);
mem.Seek(0, SeekOrigin.Begin);
IWordDocument 문서 = new WordDocument(mem, FormatType.Automatic);
document.Protect(ProtectionType.AllowOnlyFormFields, key);
var outMem = new MemoryStream();
document.Save(outMem, FormatType.Doc);
outMem.Seek(0, SeekOrigin.Begin);
return outMem;
}
북마크 위치에 테이블 생성
public static IWTable 바꾸기Table(WordDocument 문서, 문자열 BookmarkName, DataTable 데이터, 문자열 mergeColName, List<List<string>> mutilTableCaption)
{
if (document == null) throw new ArgumentNullException("document");
if (bookmarkName == null) throw new ArgumentNullException("bookmarkName");
if (data == null) throw new ArgumentNullException("data");
if (data.Columns.Count < 1) throw new ArgumentNullException("data");
int captionCount = mutilTableCaption != null && mutilTableCaption.Count > 0 ? mutilTableCaption.Count : 1;
WTable table = new WTable(문서, true);
table.ResetCells(data.Rows.Count + captionCount, data.Columns.Count);
for(var colCount = 0; colCount < captionCount; colCount++)
{
for(var col = 0; col < data.Columns.Count; col++)
{
var 단락 = table.Rows[colCount].Cells[col].AddParagraph();
var caption = data.Columns[col].ColumnName;
if (mutilTableCaption != null && mutilTableCaption.Count > 0)
캡션 = mutilTableCaption[colCount][col];
var text = 단락.AppendText(caption);
단락.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Center;
text.CharacterFormat.FontName = "문자";
text.CharacterFormat.Bold = 거짓;
text.CharacterFormat.FontSize = 10.5f;
}
}
for(var row = captionCount; row <= data.Rows.Count; row++)
for(var col = 0; col < data.Columns.Count; col++)
{
var 단락 = table.Rows[row].Cells[col].AddParagraph();
var text = 단락.AppendText(data.Rows[row - captionCount][col] + "");
text.CharacterFormat.FontName = "문자";
text.CharacterFormat.FontSize = 9f;
이중 값 = 0;
if (double.TryParse(text.Text, out val))
{
text.Text = Math.Round(val, 2) + "";
//오른쪽 정렬
단락.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Right;
table.Rows[row].Cells[col].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
table.Rows[row].Cells[col].CellFormat.TextWrap = false;
}
}
//셀 병합, 아래쪽으로 병합
if (!string.IsNullOrEmpty(mergeColName))
for(var row = captionCount; 행 < table.Rows.Count; row++)
{
var cell = table.Rows[row].Cells[data.Columns[mergeColName].Ordinal];
cell.CellFormat.VerticalMerge = CellMerge.Start;
var text = data.Rows[row - captionCount][mergeColName] + "";
if (행 > captionCount)
{
var beforeCell = table.Rows[row - captionCount].Cells[data.Columns[mergeColName].Ordinal];
var findText = data.Rows[row - captionCount - 1][mergeColName] + "";
if (text.Equals(findText))
cell.CellFormat.VerticalMerge = CellMerge.Continue;
}
}
BookmarksNavigator bk = new BookmarksNavigator(문서);
bk.MoveToBookmark(북마크이름);
TextBodyPart 본문= bk.GetBookmarkContent();
bk.DeleteBookmarkContent(true);
bk.InsertTable(테이블);
반환 테이블;
}
-