검색해서 퍼온거 인데 씨트 하나에 데이터테이블 하나만 적용하게끔 되어있길래
데이터테이블은 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();
}
}