none
c#에서 엑셀로 리스트값들을 보여줄때.. RRS feed

  • 질문

  • c#에서 엑셀로 리스트값을 보여줄때 마지막열이 30열 이라고 하면

    그 다음 열위치에다가 차트컨트롤을 표시하고싶은데

    그 위치를 얻거나 다음열에 차트컨트롤을 띄우는 그런 함수가 있을까요? 

    2012년 2월 28일 화요일 오전 11:22

모든 응답

  • 안녕하십니까? only1122님, 답변이 늦어져서 죄송합니다.

    문의 하신 ”c#에서 엑셀로 리스트값들을 보여줄때..”에 대해 답변드리겠습니다.

    아래 코드를 참조해 사용해 보시기 바랍니다.

            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
          
            object misValue = System.Reflection.Missing.Value;

            private MSForms.CommandButton btnExcel;

            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                xlApp = new Excel.Application();
                xlWorkBook = xlApp.Workbooks.Add(misValue);
                xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

                //add data
                xlWorkSheet.Cells[1, 1] = "";
                xlWorkSheet.Cells[1, 2] = "Student1";
                xlWorkSheet.Cells[1, 3] = "Student2";
                xlWorkSheet.Cells[1, 4] = "Student3";

                xlWorkSheet.Cells[2, 1] = "Term1";
                xlWorkSheet.Cells[2, 2] = "80";
                xlWorkSheet.Cells[2, 3] = "65";
                xlWorkSheet.Cells[2, 4] = "45";

                xlWorkSheet.Cells[3, 1] = "Term2";
                xlWorkSheet.Cells[3, 2] = "78";
                xlWorkSheet.Cells[3, 3] = "72";
                xlWorkSheet.Cells[3, 4] = "60";
                //
                // some other data insertion to cells
                //
                xlWorkSheet.Cells[10, 1] = "Term9";
                xlWorkSheet.Cells[10, 2] = "24";
                xlWorkSheet.Cells[10, 3] = "78";
                xlWorkSheet.Cells[10, 4] = "49";
                xlApp.Visible = true;
            
                #region
                xlWorkSheet.Shapes.AddOLEObject("Forms.CommandButton.1", Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing, 60, 60, 60, 60);

                Excel.OLEObject oleObject = xlWorkSheet.OLEObjects(1);
                Microsoft.Vbe.Interop.Forms.CommandButton cmdButton = oleObject.Object;

                cmdButton.Click += new MSForms.CommandButtonEvents_ClickEventHandler(cmdButton_Click);


                #endregion


                //xlWorkBook.SaveAs(@"E:\Test.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                //xlWorkBook.Close(true, misValue, misValue);
                //xlApp.Quit();

                MessageBox.Show("Excel file created , you can find the file c:\\csharp.net-informations.xls");

            }


    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.
    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

     

    2012년 3월 6일 화요일 오전 1:41
    중재자
  •     A,   B,   C,   D~~~~~(열)

    1 aa   bb  cc  dd

    2

    3

    (행)

    1. 위와 같이 엑셀 시트가 있을 경우 아래와 같이 하면 d1 셀의 포인트를 잡을 수 있습니다.

    this.Range["a1", missing].get_End(Excel.XlDirection.xlToRight)

    2. 원하는 위치가 다음 열이시라고 하니 아래와 같이 사용하시면 될듯 합니다.

    this.Range["a1", missing].get_End(Excel.XlDirection.xlToRight).get_Offset(0,1)

    약간 번거로운 방법일수 있는데요..

    3. 아래와 같이 약간 쉬운 방법도 가능합니다.

    소스만 보셔도 컬럼에 카운트를 세는 거란 걸 아실 수 있습니다.

    this.Range["a1", missing].CurrentRegion.Columns.Count

    여기에 +1해주시면 되겠죠?

    이런 방식으로 위치를 잡으시면 됩니다.

    차트는 만드실 수 있는거 같아 위치 잡는 방법만 올립니다.


    http://vsto.tistory.com


    • 편집됨 VSTO_Beginner 2012년 5월 3일 목요일 오전 10:22
    2012년 5월 3일 목요일 오전 10:22