블로그 이미지
Twitter : @parkkopil 박코필

카테고리

분류 전체보기 (68)
Common Criteria (4)
WEB (3)
Server (12)
보안 솔루션 (6)
Reversing (5)
암호학 (0)
시스템 (3)
Network (3)
스토리지 (0)
컨설팅 (1)
자격증 (4)
뉴스 (5)
Q & A (5)
잡동사니 (4)
Hack (0)
작업 (1)
c# (7)
야구 -그리핀스 (2)
Android (1)
Total79,230
Today11
Yesterday15

달력

« » 2018.12
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

공지사항

태그목록

windows 7 xp 가상화

시스템 / 2010.01.22 11:55
http://blog.naver.com/film_kid/60097165058
Posted by 박코필

DGV to EXCEL

c# / 2010.01.20 10:24
http://mastmanban.tistory.com/235

퍼온글입니다.

(추가) 참조 - .NET 에서 Microsoft.Office.Interop.Excel을 추가 해주어야 함
     내용이 없다던지, 추가 칼럼이 있다던지 하면 error 발생.
     커스터마이징이 필요                
----------------------------------------------------------------------------------------------------
C# 윈폼에서 DataGridView Data를 Excel 파일로 저장하는 소스를 알려 드리겠습니다. 순수하게 제가 만든건 아니고 여러 사이트에서 소스를 참조해서 제 상황에 맞게끔 응용을 했습니다.

제가 MS 오피스 2007 에 Visual Studio 2008 을 쓰기 때문에 이를 기준으로 소개를 하겠습니다.

먼저 솔루션 탐색기에서 참조추가를 합니다.

솔루션탐색기->참조추가->COM->Microsoft Excel 12.0 Object Libary 선택



이후 아래 소스를 적용하시면 됩니다.

using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;

private void ExportExcel(bool captions)
{
    this.saveFileDialog.FileName = "TempName";
    this.saveFileDialog1.DefaultExt = "xls";
    this.saveFileDialog1.Filter = "Excel files (*.xls)|*.xls";
    this.saveFileDialog1.InitialDirectory = "c:\\";

    DialogResult result = saveFileDialog.ShowDialog();

    if (result == DialogResult.OK)
    {
        int num = 0;
        object missingType = Type.Missing;

        Excel.Application objApp;
        Excel._Workbook objBook;
        Excel.Workbooks objBooks;
        Excel.Sheets objSheets;
        Excel._Worksheet objSheet;
        Excel.Range range;

        string[] headers = new string[dataGridView.ColumnCount];
        string[] columns = new string[dataGridView.ColumnCount];

        for (int c = 0; c < dataGridView.ColumnCount; c++)
        {
            headers[c]=dataGridView.Rows[0].Cells[c].OwningColumn.HeaderText.ToString();
            num = c + 65;
            columns[c] = Convert.ToString((char)num);
        }

        try
        {
            objApp = new Excel.Application();
            objBooks = objApp.Workbooks;
            objBook = objBooks.Add(Missing.Value);
            objSheets = objBook.Worksheets;
            objSheet = (Excel._Worksheet)objSheets.get_Item(1);

            if (captions)
            {
                for (int c = 0; c < dataGridView.ColumnCount; c++)
                {
                    range = objSheet.get_Range(columns[c] + "1", Missing.Value);
                    range.set_Value(Missing.Value, headers[c]);
                }
            }

            for (int i = 0; i < dataGridView.RowCount - 1; i++)
            {
                for (int j = 0; j < dataGridView.ColumnCount; j++)
                {
                    range = objSheet.get_Range(columns[j] + Convert.ToString(i + 2),
                                                           Missing.Value);

                    range.set_Value(Missing.Value,
                                          dataGridView.Rows[i].Cells[j].Value.ToString());

                }
            }

            objApp.Visible = false;
            objApp.UserControl = false;

            objBook.SaveAs(@saveFileDialog.FileName,
                      Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,
                      missingType, missingType, missingType, missingType,
                      Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
                      missingType, missingType, missingType, missingType, missingType);
            objBook.Close(false, missingType, missingType);

            Cursor.Current = Cursors.Default;

            MessageBox.Show("Save Success!!!");
        }
        catch (Exception theException)
        {
            String errorMessage;
            errorMessage = "Error: ";
            errorMessage = String.Concat(errorMessage, theException.Message);
            errorMessage = String.Concat(errorMessage, " Line: ");
            errorMessage = String.Concat(errorMessage, theException.Source);

            MessageBox.Show(errorMessage, "Error");
        }
    }
} 


'c#' 카테고리의 다른 글

DGV to EXCEL  (0) 2010.01.20
c# 이미지 싱글톤(개인)  (0) 2010.01.19
TreeView ImageList 사용  (0) 2010.01.18
c# 쿼리 결과를 트리뷰로 나타내기  (0) 2010.01.13
DGB row header에 숫자 표시  (0) 2010.01.13
Datagridview to Excel  (0) 2010.01.11
Posted by 박코필

Mizuno All Round 12 inch

'야구 -그리핀스' 카테고리의 다른 글

신월구장 - 2010.04.25  (0) 2010.05.02
Mizuno All Round  (0) 2010.01.20
Posted by 박코필