Microsoft.Office.Interop.Excel에서 여러 Excel 파일의 대량 편집
우선 실행 결과를 확인하고 싶다 → 실행 결과
개발 환경
개발 언어
1. 새로운 프로젝트 만들기
C# 콘솔 애플리케이션 프로젝트를 만듭니다.
작성 방법은 아래를 참조하십시오.
Visual Studio에서 새 프로젝트 만들기
2. 참조 추가
Microsoft Excel 16.0 Object Library COM 참조를 추가합니다.
추가 방법은 아래를 참조하십시오.
.NET 5 프로젝트에서 COM 참조 추가
3. 소스 코드
Program.cs
using System.IO;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelEdit
{
class Program
{
static void Main(string[] args)
{
// 色んなオブジェクトの定義
Excel.Application excel = null;
Excel.Workbooks books = null;
Excel.Workbook book = null;
Excel.Sheets sheets = null;
Excel.Worksheet sheet = null;
Excel.Range cells = null;
Excel.Range range = null;
// フォルダの取得
string folderPath = @"C:\Users\xyy\Desktop\Folder";
// フォルダの中の拡張子が.xlsxのファイルの取得
string[] files = Directory.GetFiles(Path.GetFullPath(folderPath), "*.xlsx");
try
{
// Excelを起動する
excel = new Excel.Application();
// ブック一覧の定義
books = excel.Workbooks;
// 各ファイルに対して下記処理を繰り返し行う
foreach (string file in files)
{
try
{
// ブックを開く
book = books.Open(file);
// シート一覧の定義
sheets = book.Worksheets;
// 最初のシートの選択
sheet = sheets[1];
// セル一覧の定義
cells = sheet.Cells;
// セル[2,1]の選択
// range = sheet.Cells[2, 1] という書き方だと、sheet.Cellsとsheet.Cells[2, 1]という二つのExcel.Rangeオブジェクトが隠れて、
// オブジェクトの解放漏れが発生するので、注意してください。
range = cells[2, 1];
// セル[2,1]の値をtestに設定する
range.Value = "test";
// ブックを保存して閉じる
book.Close(true);
// Excelを終了する
excel.Quit();
}
finally
{
// 定義されたオブジェクトの解放、ループのたびに毎回解放しないとExcelのプロセスが残り続ける
Marshal.FinalReleaseComObject(range);
Marshal.FinalReleaseComObject(cells);
Marshal.FinalReleaseComObject(sheet);
Marshal.FinalReleaseComObject(sheets);
Marshal.FinalReleaseComObject(book);
}
}
}
finally
{
// ブック一覧とExcelオブジェクトの解放は最後に一回行っていい
Marshal.FinalReleaseComObject(books);
Marshal.FinalReleaseComObject(excel);
}
}
}
}
4. 편집 대상으로 하는 파일의 작성
5. 실행 결과
실행 전
Book1 & Book2 Book1 & Book2
6. 이상시 대응
실행중인 프로그램을 강제 종료하면 개체를 해제 할 수 없으며 Excel 프로세스가 계속 남아 있습니다.
프로그램을 다시 실행하면 오류가 발생할 가능성이 높습니다.
해결 방법에 대해 작업 관리자에서 남아 있는 Excel 프로세스를 종료한 다음 프로그램을 다시 실행하십시오.
7. 값 편집 이외의 기능
7.1. 열 삽입
Program.cs
// 列一覧の定義
cells = sheet.Columns;
// 2列目の選択
range = cells[2];
// 3列を挿入する
for (int i = 0; i < 3; i++)
{
range.Insert();
}
실행 전
실행 후
7.2. 셀 결합
Program.cs
// セル一覧の定義
cells = sheet.Cells;
// セル[2, 2]の選択
range1 = cells[2, 2];
// セル[2, 4]の選択
range2 = cells[2, 4];
// セル[2, 2]から[2, 4]までの範囲の選択
range3 = sheet.Range[range1,range2];
// セルの結合
range3.Merge();
또는
Program.cs
// セル[B2]から[D2]までの範囲の選択
range = sheet.Range["B2:D2"];
// セルの結合
range.Merge();
실행 전
실행 후
7.3. 문자색 변경
Program.cs
// フォントオブジェクトの定義
Excel.Font font = null;
// ... 略
// セル一覧の定義
cells = sheet.Cells;
// セル[2,1]の選択
range = cells[2, 1];
// セル[2,1]のフォントの選択
font = range.Font;
// 文字色を赤にする
font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
실행 전 실행 후
7.4. 테두리 설정
Program.cs
// 罫線オブジェクトの定義
Excel.Borders border = null;
// ... 略
// セル一覧の定義
cells = sheet.Cells;
// セル[2,2]の選択
range = cells[2, 2];
// セル[2,2]の罫線選択
border = range.Borders;
// 罫線を実線に設定する
border.LineStyle = Excel.XlLineStyle.xlContinuous;
// 罫線の太さの設定
border.Weight = 2d;
실행 전
참고문헌
이 기사는 다음 정보를 참고로 작성했습니다.
마지막으로
재일 중국인 엔지니어입니다. 기술적인 지적 혹은 일본어의 지적이 있으면, 가르쳐 주세요.
Reference
이 문제에 관하여(Microsoft.Office.Interop.Excel에서 여러 Excel 파일의 대량 편집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xyypublic/items/5509d44202f695fc0969텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)