public static void ToExcel(this DataTable table, string fileName, string sheetName) { if (string.IsNullOrEmpty(fileName)) { throw new ArgumentException("파일의 이름은 null이거나 빈 문자열일 수 없습니다.", nameof(fileName)); } SaveFileDialog saveD = new SaveFileDialog(); saveD.Title = "저장 경로 선택"; saveD.FileName = fileName; saveD.Filter = $"Excel 통합문서 (.xlsx)|*.xlsx"; FileStream fs = null; try { if (saveD.ShowDialog() == true) { fs = saveD.OpenFile() as FileStream; ExcelCreater.FromDataTable(table, sheetName, fs); } } catch (Exception ex) { MessageBox.Show($"xlsx 파일을 저장하는데 실패했습니다...\n\n추가 정보 : {ex.Message}", "오류", MessageBoxButton.OK, MessageBoxImage.Error); } finally { if (fs != null) { fs.Close(); } } }
private void ToExcel_Click(object sender, RoutedEventArgs e) { StudentInfo[] studentInfos = mStudents.ToArray(); SaveFileDialog saveD = new SaveFileDialog(); saveD.Filter = $"Excel 통합문서 (.xlsx)|*.xlsx"; saveD.Title = "저장 경로 선택"; string fileName; try { string first = FirstDateControl.SelectedDate.Value.ToShortDateString(); string second = SecondDateControl.SelectedDate.Value.ToShortDateString(); if (first == second) { fileName = $"{first} 근태 불량자 명단.xlsx"; } else { fileName = $"{first} ~ {second} 근태 불량자 명단.xlsx"; } } catch (Exception) { fileName = "근태 불량자 명단.xlsx"; } saveD.FileName = fileName; FileStream fs = null; try { if (saveD.ShowDialog() == true) { fs = saveD.OpenFile() as FileStream; DataTable[] tables = new DataTable[studentInfos.Length]; string[] heads = new string[studentInfos.Length]; for (int i = 0; i < studentInfos.Length; ++i) { tables[i] = FaultsToTable(mFaultsDict[studentInfos[i]]); heads[i] = $"{studentInfos[i].Grade}학년 {studentInfos[i].Class}반 {studentInfos[i].Number}번 {studentInfos[i].Name}"; } ExcelCreater.FromDataTableArray(tables, heads, fileName.Substring(0, fileName.IndexOf('.')), fs); } } catch (Exception ex) { MessageBox.Show($"xlsx 파일을 저장하는데 실패했습니다...\n\n추가 정보 : {ex.Message}", "오류", MessageBoxButton.OK, MessageBoxImage.Error); } finally { if (fs != null) { fs.Close(); } } }