[C#] 엑셀과 연동 -_-a C# 2010. 4. 6. 11:58
엑셀하고 연동하다가.. 그 부분을 남겨두는게 좋을 것 같아서..

포스팅.. 이게 대체 얼마만인가 ㅠㅠ

일단 제일 먼저 참조를건다. 8.0과 9.0이 있었던거 같은데..

오피스 버전에 따라 다른 것이었다

using Excel = Microsoft.Office.Interop.Excel;

선언을 살포시 해 준 다음..

Excel.Workbook workbook = null;
Excel.Worksheet worksheet = null;
Excel.Application application = null;

선언을 해준다.

object missing = System.Reflection.Missing.Value;
object fileName = @"파일.xls";
위에 파일 이름은 파일이 저장되는 경로이다.

그리고 처리를 해서 엑셀 파일 양식을 읽어온다.

application = new Excel.Application();
application.Visible = false; 

엑셀창이 나타나지 않고 작업을 진행하기 위해서 처리를 하고난 다음

workbook = application.Workbooks.Open(@"파일.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
작업 양식이 저장되어 있는 엑셀을 열어주고

worksheet = (Excel.Worksheet)workbook.Sheets["시트명"];

해당 시트를 생성하고 난 다음 작업을 시작하면 된다

get_Range는 해당하는 범위를 가져온다.

예를 들어서 다음과 같이 하면
worksheet.get_Range("A12", "H12").Insert(Excel.XlInsertShiftDirection.xlShiftDown, Type.Missing);
해당 라인이 추가가 된다. 당연히 빈 공백이다.

그리고 해당하는 범위의 색을 바꾸자고 한다면
worksheet.get_Range("A12", "H12").Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
형식으로 해 주면 된다.

해당하는 셀에 직접 입력하는 경우는
worksheet.Cells[12, 1] = i.ToString();
형식이다.

해당 파일을 열어서 그 데이터를 가져오고자 할 경우에는
worksheet.Cells.get_Range("B7", "B7").Text.ToString();
과 같이 해 주면 된다.

그리고 마지막으로 작업을 끝내고 난 다음 저장을 할 경우에
workbook.SaveAs(fileName, Excel.XlFileFormat.xlWorkbookNormal, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlShared, Excel.XlSaveConflictResolution.xlLocalSessionChanges, missing, missing, missing, missing);
여기서 fileName은 포스팅 위쪽에 명시된 대상 파일이다.

위와같은 처리를 해서 저장을 해 주면 된다!!

그거 말고도 참.. 많던데.. 쉽지 않은 작업.. 이였다.. 왜 -_-;; 몰랐으니까;;