백엔드 개발 C#.Net 튜토리얼 C#은 NPOI를 사용하여 Word 문서를 생성합니다(템플릿에 따라).

C#은 NPOI를 사용하여 Word 문서를 생성합니다(템플릿에 따라).

Aug 07, 2018 am 10:52 AM
c#

워드 내보내기를 통합해야 하는 프로젝트인데 제가 할 당시에는 온라인 문서 리소스가 많지 않고 상당히 지저분해서 확인하고 정리하고 기록을 작성하고 NPOI가 운영하는 Word의 기본 작업도 공유했습니다. 도움이 필요한 친구와 문서.

이 글에는 Word 생성을 위한 기본 작업인 Word 텍스트 생성 작업, 표 작업, 그림 작업이 포함되어 있습니다.

다음은 개인적인 이해에 불과합니다. 더 좋은 아이디어가 있으면 언제든지 추가해 주세요.

VS2017, 솔루션을 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지를 관리하고 프로젝트에 대한 NPOI 패키지를 검색 및 설치하고 인용합니다.
NPOI 사용 ·
1 템플릿 가져오기(XWPFDocument 문서)
먼저 템플릿을 사용하세요. 템플릿을 가져온 다음 편집을 위해 얻은 템플릿을 NPOI 문서 개체로 인스턴스화합니다.
using (FileStream stream = File.OpenRead("Template file address ”)){ XWPFDocument 문서 = 새로운 XWPFDocument(스트림) //문서 처리, 코드 제어 편집 문서.
}
doc 처리 후 새 파일을 생성해서 doc에 쓰면 단어 생성이 완료됩니다.
FileStream file = new FileStream(생성된 파일 경로 + 파일 이름, FileMode.Create, FileAccess.Write);
doc.Write(file);
file.Close();
doc는 우리가 얻은 템플릿의 모든 내용입니다.

또 다른 점은 이 편집기에서 사용하는 템플릿은 모두 docx 접미사 파일이라는 점입니다. doc를 수정하면 docx를 읽을 때 오류가 보고되며, doxc 문서로 저장해야 합니다.


2. 텍스트 처리(XWPFParagraph para) doc.Paragraphs 문서의 모든 단락 개체를 가져옵니다.
para.ParagraphText 단락의 텍스트 데이터를 가져옵니다(교체할 텍스트, 대체 텍스트). 단락의 텍스트 교체(템플릿의 핵심)XWPFParagraph의 공식 참조 문서


3. 테이블 처리(XWPFTable 테이블)

doc.Tables 문서의 모든 테이블 개체를 가져옵니다. more here , doc.Tables는 중첩된 내부 테이블을 포함하지 않고 Word에서 가장 바깥쪽 테이블만 가져옵니다.

중첩된 셀을 얻으려면 cell.Tables를 사용할 수 있습니다.

(1) 테이블 행 처리(XWPFTableRow 행)
row.Rows 테이블의 모든 행 가져오기

(2) 테이블 셀 처리(XWPFTableCell 셀)
테이블 행의 모든 ​​셀 가져오기
셀을 가져온 후 셀에서 텍스트 단락(단락)을 가져와 텍스트를 바꿀 수 있습니다.
(3) 행 셀을 가로로 병합

CT_Tc cttcofRowThird = cell.GetCTTc();
CT_TcPr ctProfRowThird = cttcofRowThird.AddNewTcPr();
ctProfRowThird.gridSpan = new CT_DecimalNumber();
ctProfRowThird.gridSpan.val = num.ToString();//合并num列
로그인 후 복사
row.GetTableICells() ;
(4) 수직 병합 컬럼 셀
List<XWPFTableRow> rows所有要合并的行的XWPFTableRow对象集合。

XWPFTableCell cellFirstofThird = 第一行要合并的单元格对象;
CT_Tc cttcFirstofThird = cellFirstofThird.GetCTTc();
CT_TcPr ctPrFirstofThird = cttcFirstofThird.AddNewTcPr();
ctPrFirstofThird.AddNewVMerge().val = ST_Merge.restart;//开始合并行
ctPrFirstofThird.AddNewVAlign().val = ST_VerticalJc.center;//垂直
cttcFirstofThird.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
for (int i = 1; i < rows.Count; i++)
{
    XWPFTableCell cellfirstofRow = 第i行要合并的单元格对象;
    CT_Tc cttcfirstofRow = cellfirstofRow.GetCTTc();
    CT_TcPr ctPrfirstofRow = cttcfirstofRow.AddNewTcPr();
    ctPrfirstofRow.AddNewVMerge().val = ST_Merge.@continue;//继续合并行
    ctPrfirstofRow.AddNewVAlign().val = ST_VerticalJc.center;//垂直
}
로그인 후 복사

4. 이미지 처리

NPOI 버전 2.3.0의 이미지 삽입에는 xml 파일의 수정 사항이 통합되지 않아서 손글씨로 컴파일해야 합니다(물론 복사했습니다) ).

using (FileStream fsImg = new FileStream(图片路径, FileMode.Open, FileAccess.Read, FileShare.None))
{
var picID = doc.AddPictureData(fsImg, (int)NPOI.XWPF.UserModel.PictureType.JPEG);
string picXml = ""
+ "      <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">"
                    + "         <pic:nvPicPr>" + "            <pic:cNvPr id=\""
                    + "0"
                    + "\" name=\"Generated\"/>"
                    + "            <pic:cNvPicPr/>"
                    + "         </pic:nvPicPr>"
                    + "         <pic:blipFill>"
                    + "            <a:blip r:embed=\""
                    + id
                    + "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"
                    + "            <a:stretch>"
                    + "               <a:fillRect/>"
                    + "            </a:stretch>"
                    + "         </pic:blipFill>"
                    + "         <pic:spPr>"
                    + "            <a:xfrm>"
                    + "               <a:off x=\"0\" y=\"0\"/>"
                    + "               <a:ext cx=\""
                    + width
                    + "\" cy=\""
                    + height
                    + "\"/>"
                    + "            </a:xfrm>"
                    + "            <a:prstGeom prst=\"rect\">"
                    + "               <a:avLst/>"
                    + "            </a:prstGeom>"
                    + "         </pic:spPr>"
                    + "      </pic:pic>";
                XWPFParagraph par = cell.AddParagraph();//创建段落对象(可以在doc加也可在cell加)
                par.Alignment = ParagraphAlignment.CENTER;//居中
                XWPFRun run = par.CreateRun();
                CT_Inline inline = run.GetCTR().AddNewDrawing().AddNewInline();
                inline.graphic = new CT_GraphicalObject
                {
                    graphicData = new CT_GraphicalObjectData
                    {
                        uri = "http://schemas.openxmlformats.org/drawingml/2006/picture"
                    }
                };
                try
                {
                    inline.graphic.graphicData.AddPicElement(picXml);
                }
                catch (XmlException xe)
                {
                    throw xe;
                }
                NPOI.OpenXmlFormats.Dml.WordProcessing.CT_PositiveSize2D extent = inline.AddNewExtent();
                extent.cx = width;
                extent.cy = height;
                NPOI.OpenXmlFormats.Dml.WordProcessing.CT_NonVisualDrawingProps docPr = inline.AddNewDocPr();
                docPr.id = 1;
                docPr.name = "Image" + id;
}
로그인 후 복사

오늘은 여기까지 하고 나중에 더 나오면 추가하겠습니다.

관련 권장 사항:

C/C++를 사용하여 PHP 확장 작성


[c# 튜토리얼] C# 데이터 유형

위 내용은 C#은 NPOI를 사용하여 Word 문서를 생성합니다(템플릿에 따라).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C#을 사용한 Active Directory C#을 사용한 Active Directory Sep 03, 2024 pm 03:33 PM

C#을 사용한 Active Directory 가이드. 여기에서는 소개와 구문 및 예제와 함께 C#에서 Active Directory가 작동하는 방식에 대해 설명합니다.

C#의 난수 생성기 C#의 난수 생성기 Sep 03, 2024 pm 03:34 PM

C#의 난수 생성기 가이드입니다. 여기서는 난수 생성기의 작동 방식, 의사 난수 및 보안 숫자의 개념에 대해 설명합니다.

C# 데이터 그리드 보기 C# 데이터 그리드 보기 Sep 03, 2024 pm 03:32 PM

C# 데이터 그리드 뷰 가이드. 여기서는 SQL 데이터베이스 또는 Excel 파일에서 데이터 그리드 보기를 로드하고 내보내는 방법에 대한 예를 설명합니다.

C# 직렬화 C# 직렬화 Sep 03, 2024 pm 03:30 PM

C# 직렬화 가이드. 여기에서는 C# 직렬화 개체의 소개, 단계, 작업 및 예제를 각각 논의합니다.

C#의 액세스 한정자 C#의 액세스 한정자 Sep 03, 2024 pm 03:24 PM

C#의 액세스 수정자에 대한 안내입니다. 예제 및 출력과 함께 C#의 액세스 한정자의 소개 유형에 대해 논의했습니다.

C#의 소수 C#의 소수 Sep 03, 2024 pm 03:35 PM

C#의 소수 가이드. 여기서는 코드 구현과 함께 C#의 소수에 대한 소개와 예를 논의합니다.

C#의 패턴 C#의 패턴 Sep 03, 2024 pm 03:33 PM

C#의 패턴 가이드. 여기에서는 예제 및 코드 구현과 함께 C#의 패턴 소개 및 상위 3가지 유형에 대해 설명합니다.

C#의 팩토리얼 C#의 팩토리얼 Sep 03, 2024 pm 03:34 PM

C#의 팩토리얼 가이드입니다. 여기서는 다양한 예제 및 코드 구현과 함께 C#의 계승에 대한 소개를 논의합니다.

See all articles