none
C# WPF를 이용한 엑셀 파일 생성 중 Combobox와 CheckBox 기능 문의 드립니다. RRS feed

  • 질문


  • 현재 EventLog 파일 중의 데이터를 불러와서 엑셀로 현재 시간 파일명으로 저장하는 예제를 만들었습니다.

    using System;
    using System.Reflection;
    
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    
    using Excel = Microsoft.Office.Interop.Excel;
    
    public partial class ExcelOutput : Window
        {
            public ExcelOutput()
            {
                InitializeComponent();
            }
    private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                Excel.Application oXL = new Excel.Application();
                Excel._Workbook oWB = oXL.Workbooks.Add(true);
                Excel._Worksheet oSheet = oWB.Worksheets.get_Item(1) as Excel._Worksheet;
                Excel.Range oRng;
    
                try
                {
                    //Start Excel and get Application object.
                    //oXL = new Excel.Application();
                    //oXL.Visible = false;
                    //oXL.UserControl = false;
                    //oXL.DisplayAlerts = false;
    
                    oSheet.Cells[1, 1] = "A";
                    oSheet.Cells[1, 2] = "B";
                    oSheet.Cells[1, 3] = "C";
                    oSheet.Cells[1, 4] = "D";
                    oSheet.Cells[1, 5] = "E";
                    
                                
                    EventLogManager.Instance.LoadEventLogInfo();
                    List<EventLogInfo> eventlog = EventLogManager.Instance.GetEventList();
    
                    int y = 2;
                    foreach (EventLogInfo u in eventlog)
                    {
                      oSheet.Cells[y, 1] = u.A.ToString();
          
                        if (u.B == null)
                      oSheet.Cells[y, 2] = " ";
                        else
                      oSheet.Cells[y, 2] = u.B.ToString();
    
                        if (u.C == null)
                      oSheet.Cells[y, 3] = " ";
                        else
                      oSheet.Cells[y, 3] = u.C.ToString();
    
                       
    
                        if (u.D == null)
                      oSheet.Cells[y, 4] = " ";
                        else
                      oSheet.Cells[y, 4] = u.D.ToString();
    
                        if (u.E == null)
                      oSheet.Cells[y, 5] = " ";
                        else
                      oSheet.Cells[y, 5] = u.E.ToString();
                        y++;
                    }
    
                    //AutoFit columns A:D.
                    oRng = oSheet.get_Range("A1", "P1");
                    oRng.EntireColumn.AutoFit();
    
                    int T_Year = DateTime.Now.Year;
                    int T_Month = DateTime.Now.Month + 1;
                    int T_Day = DateTime.Now.Day;
                    int T_Hour = DateTime.Now.Hour;
                    int T_Minute = DateTime.Now.Minute;
                    int T_Second = DateTime.Now.Second;
    
                    DateTime dTime = new DateTime(T_Year, T_Month, T_Day, T_Hour, T_Minute, T_Second);
                    string time = dTime.ToString("yyMMdd_HHmmss");
                    string data = time + ".xls";
    
                    // Save Excel File
                    oWB.SaveAs(data, Excel.XlFileFormat.xlExcel8, Missing.Value, Missing.Value,
                    Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange,
                    Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    
                    //oWB.Save();
    
            oWB.Close(false, Missing.Value, Missing.Value);
    
       private void Button_Click_2(object sender, RoutedEventArgs e)
            {
               CrystalReportWindow cryrep = new CrystalReportWindow();
                cryrep.ShowDialog();
            }
    }
    }
    
    

    하지만 이벤트 로그 파일안에 이벤트 요소 중 필요한 부분만 골라서 엑셀에 출력할려고 시도 중인데

    1. 이벤트 요소를 각각의 체크박스와의 매칭

    2. 선택된 체크박스의 이벤트 요소들이 엑셀의 테이블의 어떤 위치에 자리잡을 것인지를 결정

    3. 선택한 이벤트 요소가 Excel 파일 자동 생성에 해당되는 Excel Out 버튼에 어떻게 데이터를 줄지 

    처리 할 내용이 좀 복잡해지니 하나도 모르겠네요.

    혹시 아시는 분 계시면  어떤 식으로 처리해야될지 확인해주실수 있나요?

    2013년 6월 21일 금요일 오전 5:18

답변

  • 1. 각각의 체크박스에 대한 체크여부를 확인하고 매칭시키면 되는데 문제가 있나요??

    2. 엑셀의 어떤 위치에 자리잡을지 cells 혹은 range 지정해서 출력하면 되겠죠.

    3. 선택한 요소가 EXCEL OUT 버튼에 데이터를 준다는건 무슨말인가요?? ㅡㅡ

     

    .vb 파일내에서 이벤트 로그파일을 파일스트림 또는 리더를 이용해서 읽어낸후,

    필요한값을 배열 및 문자열에 저장 하시고, 해당 값을 지정된 서식 및 수식에 의해서 계산 후,

    반환된 값을 원하는 위치에 뿌려주고

    Excel 파일을 저장하시면 될껍니다.


    프로그램 개발에는 정답이 없다.

    2013년 6월 25일 화요일 오전 2:37

모든 응답

  • 1. 각각의 체크박스에 대한 체크여부를 확인하고 매칭시키면 되는데 문제가 있나요??

    2. 엑셀의 어떤 위치에 자리잡을지 cells 혹은 range 지정해서 출력하면 되겠죠.

    3. 선택한 요소가 EXCEL OUT 버튼에 데이터를 준다는건 무슨말인가요?? ㅡㅡ

     

    .vb 파일내에서 이벤트 로그파일을 파일스트림 또는 리더를 이용해서 읽어낸후,

    필요한값을 배열 및 문자열에 저장 하시고, 해당 값을 지정된 서식 및 수식에 의해서 계산 후,

    반환된 값을 원하는 위치에 뿌려주고

    Excel 파일을 저장하시면 될껍니다.


    프로그램 개발에는 정답이 없다.

    2013년 6월 25일 화요일 오전 2:37
  • 1.실력이 부족해서 매칭하는 방법을 모르겠습니다 ;;;   

    2. 체크된 순서대로 차례차례 위치시킬려면 어떻게 해야될까요?

    3. 체크 박스를 다수 선택해서 버튼을 누르면 선택된 체크박스의 로그 정보가 저장된 엑셀파일을 만드는걸 어렵게 이야기했나보네요

    2013년 6월 25일 화요일 오전 5:50