개발/Tip

dataset 내용을 엑셀로 저장

나나83 2011. 9. 6. 18:34

검색해서 퍼온거 인데 씨트 하나에 데이터테이블 하나만 적용하게끔 되어있길래

 

데이터테이블은 2개로 구성되어 있는 dataset을 테이블 각 각을 하나의 씨트에 넣을라고 수정함

 

구현상에는 문제가 없지만 소스가 지저분함.. 하나하나 소스를 본게 아니라 돌아가게끔만 만든 거기에

 

수정이 필요할 듯.

 

private void SetCreateExcel(DataSet ds, string strFilePath) {
   //declaring the application
   Excel.Application oAppln;
   //declaring work book
   Excel.Workbook oWorkBook;
   //declaring worksheet
   Excel.Worksheet oWorkSheet;
   //declaring the range
   Excel.Range oRange;

   try {
    DataTable dt1 = ds.Tables[0];
    DataTable dt2 = ds.Tables[1];
    oAppln = new Excel.Application();
    oWorkBook = (Excel.Workbook)(oAppln.Workbooks.Add(true));
    oWorkSheet = (Excel.Worksheet)oWorkBook.ActiveSheet;
    oWorkSheet.Name = "데이터 추출";

    int nRow = 2;
    String[] name = { "인덱스", "클릭수", "그룹명", "프로그램명", "제목", "등록일" };

    //check for data
    if (dt1.Rows.Count > 0) {
     //headers
     for (int nColumnIndex = 0; nColumnIndex < dt1.Columns.Count; nColumnIndex++) {
      oWorkSheet.Cells[1, nColumnIndex + 1] = dt1.Columns[nColumnIndex].ColumnName = name[nColumnIndex];
     }

     //inserting datas
     for (int nRowIndex = 0; nRowIndex < dt1.Rows.Count; nRowIndex++) {
      //in each row
      for (int nColIndex = 0; nColIndex < dt1.Columns.Count; nColIndex++) {
       // in each column
       oWorkSheet.Cells[nRow, nColIndex + 1] = dt1.Rows[nRowIndex][nColIndex].ToString();
      }
      //moving to next row
      nRow++;
     }
    }
    Excel.Worksheet oWorkSheet1;

    oWorkSheet1 = (Excel.Worksheet)oAppln.Worksheets.Add("After");
    oWorkSheet1.Name = "동영상 등록수"; // 시트 넘버

    nRow = 2;
    String[] name1 = { "일반 전체", "일반", "고화질 전체", "고화질" }; // 컬럼명을 따로 수정하기 위해 만듬
    if (dt2.Rows.Count > 0) {
     //headers
     for (int nColumnIndex = 0; nColumnIndex < dt2.Columns.Count; nColumnIndex++) {
      oWorkSheet1.Cells[1, nColumnIndex + 1] = dt2.Columns[nColumnIndex].ColumnName = name1[nColumnIndex];
     }

     //inserting datas
     for (int nRowIndex = 0; nRowIndex < dt2.Rows.Count; nRowIndex++) {
      //in each row
      for (int nColIndex = 0; nColIndex < dt2.Columns.Count; nColIndex++) {
       // in each column
       oWorkSheet1.Cells[nRow, nColIndex + 1] = dt2.Rows[nRowIndex][nColIndex].ToString();
      }
      //moving to next row
      nRow++;
     }
    }

    //range of the excel sheet
    oRange = oWorkSheet.get_Range("A1", "IV1");
    oRange.EntireColumn.AutoFit();
    oAppln.UserControl = false;

    // to view Excel sheet...
    oAppln.Visible = false;

    // to save the excel sheet....
    oWorkBook.SaveAs(strFilePath, Excel.XlFileFormat.xlWorkbookNormal, null, null, false, false, Excel.XlSaveAsAccessMode.xlShared, false, false, null, null, null);
    lbMessage.Text = "파일이 생성되었습니다.";
   } catch (Exception ex) {
    lbMessage.Text = ex.Message.ToString();
   }
  }

'개발 > Tip' 카테고리의 다른 글

xml  (0) 2011.09.06
스크랩 기능  (0) 2011.08.30
정규식  (0) 2011.08.24
하드웨어에서 파일 올릴 때 안올라 간다면  (0) 2011.06.27
xml 예시  (0) 2011.06.22