C# Office 자동 채점 방법 요약 - Word 편
8541 단어 C# Office 작업C#OfficeWord자동 채점
C#Office 작업 방법 요약-Word 편(지속적인 업데이트)
1. 워드 대상을 실례화
using MSWord = Microsoft.Office.Interop.Word;//word
using System.Reflection;// Missing.Value
MSWord.Application wordApp = new MSWord.Application();
// ApplicationClass(), , Microsoft.Office.Interop.Word False
MSWord.Document wordDoc = wordApp.Documents.Open(fileName, Missing.Value, true);
// wordApp.Documents.Add(...) ,
// , VS
// fileName word , true, readOnly=ture, ,
2. 워드 객체 풀기
wordDoc.Close(false); // false 。
wordApp.Quit(false); // false
3. 레인지 대상 소개
3.1 소개
MSWord.Range range = null;
3.2 Range 섹션 가져오기
MSWord를 통해Ducument 객체의 Paragraphs 속성을 가져오면 Paragraph의 배열이 반환되고 Paragraphs 객체의 Count 속성은 배열의 길이가 반환됩니다.
MSWord.Paragraphs paras = wordDoc.Paragraphs;
MSWord.Paragraph []para = new MSWord.Paragraph[100];
for (i = 1; i <= paras.Count; i++) para[i-1] = para[i];
주의: 여기서word 라이브러리에 봉인된 대상과 속성은 수조 아래 표시는 일반적으로 1에서 시작하는데 0을 취하면 오류가 발생하고para[i]를 통과합니다.Range에서 어떤 부분의 Range를 얻을 수 있으며, 디버깅할 때para[i]를 볼 수 있습니다.Range.Text의 컨텐트는 현재 세그먼트를 판단합니다.그러나 한 단락의 랑만 얻는 것은 턱없이 부족한 경우가 많다. 우리는 몇 글자의 랑을 더 정확하게 선택해야 한다. 똑같은 방법으로 얻을 수 있으니 계속 보십시오.
3.3 특정 섹션의 Range 가져오기
우리는 오피스에서 모두 Ctrl + F를 통해 검색 기능을 실현할 수 있다는 것을 알고 있으며, 일단 찾으면 자동으로 이 찾은 부분을 선택하기 때문에 C#를 통해 검색 기능을 호출하여 Range에 대한 정확한 위치를 정할 수 있다.
MSWord.Range objRange = null;
MSWord.Find findObj = null;
objRange = wordDoc.Range();// , , para[i].Range
findObj = objRange.Find;//
findObj.Text = " ";
bool finded = findObj.Execute();// , bool , True
if( finded )//
{
......
}
Execute () 방법을 실행하면 objRange는 자동으로 찾은 부분으로 설정됩니다. objRange를 통해 찾을 수 있습니다.Text가 올바르게 찾았는지 확인합니다. (찾은 첫 번째 일치 결과를 되돌려줍니다.)
4. 채점 방법 대전
4.1 표지 판단
여기에 정확한 표지가 삽입되었는지 판단하는 좋은 방법을 찾지 못했지만 표지가 삽입된 것은 표지 내용이 있는 페이지가 삽입된 것이다. 표지의 양식이 다르고 내용도 다르기 때문에 표지 부분의 문자열을 직접 꺼내 정확한 표지가 추가되었는지 판단할 수 있다.예:string wordText = wordDoc.Content.Text;
string cover = wordText.Substring(0, wordText.IndexOf(" "));
if (cover.Equals(" ")) grade += 1.0f;// ,
4.2 글씨체 판단
MSWord를 통해Range 객체의 Font 객체는 글꼴에 대한 속성을 가져옵니다.
MSWord를 통해Range.Font.×××얻다
속성 이름
반환 유형
속뜻
Name
string
'송체', '해서체' 등 글꼴 이름 가져오기
Size
float
글꼴 크기 가져오기
Bold
int
글꼴의 굵기를 가져올지 여부입니다. 굵기를 가져오면 값이 -1입니다.
Italic
int
글꼴의 기울기 여부를 가져옵니다. 기울어지면 값이 -1입니다.
Color
MSWord.WdColor
글꼴 색상 가져오기
Underline
MSWord.WdUnderline
글꼴 밑줄 유형 가져오기
예:if (range.Font.Color == MSWord.WdColor.wdColorRed &&
range.Font.Bold == -1 && objRange.Font.Italic == -1 &&
range.Font.Underline == MSWord.WdUnderline.wdUnderlineSingle &&
range.Font.Name == " ") grade += 1.0f;
4.3 단락 형식 판단(첫 줄 들여쓰기와 줄 간격 등)
MSWord를 통해단락 형식에 대한 속성은 Range 객체의 ParagraphFormat 객체에서 가져옵니다.
MSWord를 통해Range.ParagraphFormat.×××얻다
속성 이름
반환 유형
속뜻
CharacterUnitFirstLineIndent
float
첫 줄 들여쓰기 문자 수 가져오기
LineSpacing
float
행 간격 가져오기
Alignment
MSWord.WdParagraphAlignment
단락 정렬 가져오기
예:if (range.ParagraphFormat.CharacterUnitFirstLineIndent == 2) grade += 0.5f;
if (range.ParagraphFormat.LineSpacing == 37.2f) grade += 0.5f;
if (range.ParagraphFormat.Alignment == MSWord.WdParagraphAlignment.wdAlignParagraphCenter)
grade += 0.5f;
4.4 경계 판단
MSWord를 통해Range 객체의 Borders 객체는 경계 상자의 관련 속성을 가져옵니다.
MSWord를 통해Range.Borders.×××얻다
속성 이름
반환 유형
속뜻
InsideColor
MSWord.WdColor
안쪽 테두리 색상 가져오기
OutsideColor
MSWord.WdColor
외곽선 색상 가져오기
InsideLineStyle
MSWord.WdLineStyle
안쪽 테두리의 선 종류 가져오기
OutsideLineStyle
MSWord.WdLineStyle
외곽선의 선 유형 가져오기
InsideLineWidth
MSWord.WdLineWidth
안쪽 테두리의 선가중치 가져오기
OutsideLineWidth
MSWord.WdLineWidth
외부 테두리의 선가중치 가져오기
예:if (range.Borders.OutsideLineStyle == MSWord.WdLineStyle.wdLineStyleDouble &&
range.Borders.OutsideLineWidth == MSWord.WdLineWidth.wdLineWidth150pt )
grade += 0.5f;
if (range.Borders.OutsideColor == MSWord.WdColor.wdColorRed) grade += 0.5f;
4.5 바탕 무늬 판단
MSWord를 통해Range 객체의 Shading 객체는 경계 상자의 관련 속성을 가져옵니다.
MSWord를 통해Range.Shading.×××얻다
속성 이름
반환 유형
속뜻
Texture
MSWord.WdTextureIndex
음영의 색상 깊이 가져오기
ForegroundPatternColor
MSWord.WdColor
음영의 전경 색상 가져오기
BackgroundPatternColor
MSWord.WdColor
음영의 후경 색상 가져오기
예:if (range.Shading.Texture == MSWord.WdTextureIndex.wdTexture10Percent &&
range.Shading.ForegroundPatternColor == MSWord.WdColor.wdColorGreen &&
range.Shading.BackgroundPatternColor == MSWord.WdColor.wdColorGreen)
grade += 1.0f;
4.6 하이퍼링크 판단
MSWord를 통해Range 객체의 Hyperlinks[i] 객체는 하이퍼링크와 관련된 속성을 가져옵니다. i는 i조 하이퍼링크를 나타냅니다. 하이퍼링크가 하나만 있으면 i=1입니다.또한 Hyperlinks 객체의 Count 속성을 통해 Range에서 하이퍼링크의 총 개수를 가져올 수 있습니다.
MSWord를 통해Range.Hyperlinks[i].×××얻다
속성 이름
반환 유형
속뜻
Address
string
하이퍼링크 가져오기 주소 문자열
TextToDisplay
string
링크된 텍스트 가져오기
예:if (range.Hyperlinks.Count > 0)
{
if (range.Hyperlinks[1].Address.Contains("www.×××.×××.cn")
&& range.Hyperlinks[1].TextToDisplay.Equals("××××")) grade += 1.0f;
}
4.7 주석 판단
MSWord를 통해Range 대상의 Comments[i] 대상은 경계선의 관련 속성을 얻습니다. i는 제i조 주석을 나타냅니다. 주석이 하나만 있으면 i=1은 Comments 대상의 Count 속성을 통해 Range에서 주석의 총 조항을 얻을 수 있습니다.
MSWord를 통해Range.Comments[i].×××얻다
속성 이름
반환 유형
속뜻
Scope.Text
string
주석이 달린 텍스트 내용 가져오기
Range.Text
string
주석 내용 가져오기
예:if (range.Comments.Count > 1)
{
MSWord.Comment comment = range.Comments[1];
if (comment.Scope.Text == " " && comment.Range.Text == " ")
grade += 1.0f;
}
4.8 워터마크 판단
MSWord를 통해Document.Sections[1].Headers[MSWord.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Shapes[1] 워터마크 관련 속성 가져오기
MSWord를 통해Document.Sections[1].Headers[MSWord.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Shapes[1]].×××얻다
속성 이름
반환 유형
속뜻
TextEffect.Text
string
워터마크 내용
TextEffect.FontName
string
워터마크 글꼴 이름
TextEffect.FontSize
float
워터마크 글꼴 크기
Fill.Transparency
float
워터마크 투명도, 0.5는 반투명
Fill.ForeColor.Name
string
워터마크 글꼴의 전경 색상
Fill.BackColor.Name
string
워터마크 글꼴의 배경색
Fill.ForeColor.RGB
int
워터마크 글꼴의 전경 색상 rgb값, rgb = B×2552+G×2551+R×2550
Fill.BackColor.RGB
int
워터마크 글꼴의 배경색 rgb 값, rgb = B×2552+G×2551+R×2550
Rotation
float
회전 각도, 비스듬히 설정하면 315.0f
예:if(wordDoc.Sections[1].Headers[MSWord.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Shapes.Count > 0)
{
grade += 0.5f;
MSWord.Shape shape = wordDoc.Sections[1].Headers[MSWord.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Shapes[1];
if (shape.TextEffect.Text.Equals(" ")) grade += 0.5f;
if (shape.TextEffect.FontName == " ") grade += 0.5f;
if (shape.TextEffect.FontSize == 44.0f) grade += 0.5f;
if (shape.Fill.Transparency == 0.5 && shape.Fill.ForeColor.RGB == 255) grade += 0.5f;
if (shape.Rotation == 315) grade += 0.5f;
}
5. 미완성
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rider (추가 : Visual Studio for Mac도)에서는 C#으로 작성된 Unity 표준 클래스를 직접 볼 수있는 이야기
여러분은 Unity 코드를 어떤 편집기를 사용하여 작성합니까?
Visual Studio (for Mac 포함)
Visual Studio Code
다양한 옵션이 있다고 생각하지만 Rider를 사용하고 있습니다.
최근 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
string wordText = wordDoc.Content.Text;
string cover = wordText.Substring(0, wordText.IndexOf(" "));
if (cover.Equals(" ")) grade += 1.0f;// ,
if (range.Font.Color == MSWord.WdColor.wdColorRed &&
range.Font.Bold == -1 && objRange.Font.Italic == -1 &&
range.Font.Underline == MSWord.WdUnderline.wdUnderlineSingle &&
range.Font.Name == " ") grade += 1.0f;
if (range.ParagraphFormat.CharacterUnitFirstLineIndent == 2) grade += 0.5f;
if (range.ParagraphFormat.LineSpacing == 37.2f) grade += 0.5f;
if (range.ParagraphFormat.Alignment == MSWord.WdParagraphAlignment.wdAlignParagraphCenter)
grade += 0.5f;
if (range.Borders.OutsideLineStyle == MSWord.WdLineStyle.wdLineStyleDouble &&
range.Borders.OutsideLineWidth == MSWord.WdLineWidth.wdLineWidth150pt )
grade += 0.5f;
if (range.Borders.OutsideColor == MSWord.WdColor.wdColorRed) grade += 0.5f;
if (range.Shading.Texture == MSWord.WdTextureIndex.wdTexture10Percent &&
range.Shading.ForegroundPatternColor == MSWord.WdColor.wdColorGreen &&
range.Shading.BackgroundPatternColor == MSWord.WdColor.wdColorGreen)
grade += 1.0f;
if (range.Hyperlinks.Count > 0)
{
if (range.Hyperlinks[1].Address.Contains("www.×××.×××.cn")
&& range.Hyperlinks[1].TextToDisplay.Equals("××××")) grade += 1.0f;
}
if (range.Comments.Count > 1)
{
MSWord.Comment comment = range.Comments[1];
if (comment.Scope.Text == " " && comment.Range.Text == " ")
grade += 1.0f;
}
if(wordDoc.Sections[1].Headers[MSWord.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Shapes.Count > 0)
{
grade += 0.5f;
MSWord.Shape shape = wordDoc.Sections[1].Headers[MSWord.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Shapes[1];
if (shape.TextEffect.Text.Equals(" ")) grade += 0.5f;
if (shape.TextEffect.FontName == " ") grade += 0.5f;
if (shape.TextEffect.FontSize == 44.0f) grade += 0.5f;
if (shape.Fill.Transparency == 0.5 && shape.Fill.ForeColor.RGB == 255) grade += 0.5f;
if (shape.Rotation == 315) grade += 0.5f;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rider (추가 : Visual Studio for Mac도)에서는 C#으로 작성된 Unity 표준 클래스를 직접 볼 수있는 이야기여러분은 Unity 코드를 어떤 편집기를 사용하여 작성합니까? Visual Studio (for Mac 포함) Visual Studio Code 다양한 옵션이 있다고 생각하지만 Rider를 사용하고 있습니다. 최근 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.