ublic void SendDataToExcel(DataGridView dgv,string sheetName) { Excel._Application app = new Excel.Application(); Excel.Workbook workbook; Excel.Worksheet worksheet; workbook = app.Workbooks.Add(Type.Missing); app.Visible = true; worksheet = workbook.Sheets["Sheet1"]; worksheet = workbook.ActiveSheet; worksheet.Name = sheetName; int colIndex = 0; for (int i = 1; i < 4; i++) { if (dgv.Columns[i - 1].Visible == true) { colIndex += 1; worksheet.Cells[1, colIndex] = dgv.Columns[i - 1].HeaderText; } } for (int i = 0; i < dgv.Rows.Count ; i++) { colIndex = 0; for (int j = 0; j < 3; j++) { if (dgv.Columns[j].Visible == true) { colIndex += 1; if (i == 0 && j == 2) { worksheet.Cells[i + 2, colIndex] = dgv.Rows[0].Cells[4].Value == null ? "" : dgv.Rows[0].Cells[4].Value.ToString() ?? ""; } else { worksheet.Cells[i + 2, colIndex] = dgv.Rows[i].Cells[j].Value == null ? "" : dgv.Rows[i].Cells[j].Value.ToString() ?? ""; } } } } Excel.Range usedRange; usedRange = worksheet.UsedRange; Excel.Range rangeStart = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[usedRange.Row, usedRange.Column]; Excel.Range rangeEnd = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[usedRange.Row + usedRange.Rows.Count, usedRange.Column + usedRange.Columns.Count]; string usedStartPos = rangeStart.Address; string usedEndPos = rangeEnd.Address; SetHeaderBold(worksheet,1); for (int i = 0; i < usedRange.Columns.Count; i++) { AutoFitColumn(worksheet, i+1); } for (int i = 0; i < usedRange.Columns.Count; i++) { worksheet.Cells[1, i + 1].Interior.ColorIndex = 15; } usedRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; usedRange.Borders.ColorIndex = 1; usedRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; Excel.Range chartArea = worksheet.get_Range("A1", "B30"); Excel.ChartObjects chart = (Excel.ChartObjects)worksheet.ChartObjects(Type.Missing); Excel.ChartObject mychart = (Excel.ChartObject)chart.Add(100, 40,800, 400); Excel.Chart chartPage = mychart.Chart; chartPage.SetSourceData(chartArea, Excel.XlRowCol.xlColumns); chartPage.ChartType = Excel.XlChartType.xlColumnClustered; app.DisplayAlerts=false; System.Runtime.InteropServices.Marshal.ReleaseComObject(app); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(app); } public void SetHeaderBold(Excel.Worksheet worksheet, int row) { ((Excel.Range)worksheet.Cells[row, 1]).EntireRow.Font.Bold = true; } public void SetColumnWidth(Excel.Worksheet worksheet, int col, int width) { ((Excel.Range)worksheet.Cells[1, col]).EntireColumn.ColumnWidth = width; } public void AutoFitColumn(Excel.Worksheet worksheet, int col) { ((Excel.Range)worksheet.Cells[1, col]).EntireColumn.AutoFit(); }
출처: https://rocabilly.tistory.com/118 [프로그램이 좋다]