[C#] 엑셀 조작법 추가!! C# 2010. 7. 27. 18:45

C#에서 챠트를 직접적으로 생성 할 때는 다음과 같이 한다.

먼저 챠트 객체를 생성한 후
Excel.ChartObjects chartObjs = (Excel.ChartObjects)worksheet.ChartObjects(Type.Missing);               
챠트 포지션을 정해준다.
Excel.ChartObject chartObj = chartObjs.Add(270, 10, 200, 100);
그 다음 챠트 할당한 후
Excel.Chart xlChart = chartObj.Chart;
데이터를 넣어준다.
여기서 chartRange는 셀의 범위를 말한다.(Range)
xlChart.SetSourceData(chartRange, Type.Missing);
다음은 챠트 형태를 구하고
xlChart.ChartType = Excel.XlChartType.xlLineMarkers;
X,Y축에 대한 설정을 한다.
Excel.Axis xAxis = (Excel.Axis)xlChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary);
xAxis.MajorUnit = 20;
Excel.Axis yAxis = (Excel.Axis)xlChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary);
yAxis.MaximumScale = 100;
다음은 챠트 외부의 색을 정하는 것이고
xAxis.Border.Color = ColorTranslator.ToWin32(Color.Black);
이번 것은 챠트 내부의 색을 정한다.
xlChart.PlotArea.Interior.Color = ColorTranslator.ToWin32(Color.White);
범례를 쓰고 싶지 않다면 다음과 같이 Legend를 설정하면 된다.
Excel.Legend legend = xlChart.Legend;
legend.Delete();
셀만으로 접근하기가 힘들 경우는 TextBox를 쓰면 된다.
필자의 경우도 그러한 적이 있어 TextBox를 써봤다. 직접 생성해서 붙일 수도 있지만
엑셀 문서의 TextBox에 접근하는 것은 다음과 같다.
Excel.TextBox box = _worksheet.TextBoxes(엑셀에서 생성한 텍스트 박스 순서) as Excel.TextBox;
txt_HowTo.Text = String형 데이터;

흠냐.. 은근.. 접근 할 수 있는 것이 많지만..
셀 경우 ADO.NET에서 XML로 넘겨 속도가 빠르게 할 수 있지만..

이와 같이 객체에 접근하는 것에는 속도가 많이 떨어진다..

방법이 없을까 ㅠㅠ

[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은 포스팅 위쪽에 명시된 대상 파일이다.

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

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