본문 바로가기
C#/DevExpress

[C# DevExpress] SpreadSheet에 값 넣기

by 샤나엘 2018. 3. 28.
반응형



DevExpress 14 버전으로 작성되었습니다.

 

SpreadSheet에 값 넣기에 대한 설명입니다.

 

최종결과는 실행하면 SpreadSheet에 아래와 같이 값이 출력되게 됩니다.

 

[결과화면]

 

 

1. WinForm Project를 생성합니다.

 

2. 도구상자에서 SpreadSheetControl을 Form에 추가합니다.

 

 

 

3. Form 크기에 맞게 하기위해서 부모 컨테이너에서 도킹을 눌러서 SpreadSheet가 Form 크기에 맞도록 설정합니다.

 


 

 

4. 이제 코드를 작성합니다.

1) SpreadSheet에 출력할 Data를 생성합니다.

    - private DataTable SetData(DataTable dt)

 

2) 생성된 Data를 SpreadSheet에 등록합니다.

    - private void SetSpreadSheetData(DataTable dt)

 

3) Cell Style을 지정합니다.

          - private void SetCellStyle(Cell cell, bool isBold, int fontSize, Color fillColor)

 

 

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.Spreadsheet;

namespace SpreadSheet
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();

            dt = SetData(dt);

            SetSpreadSheetData(dt);
        }

        //Data 생성
        private DataTable SetData(DataTable dt)
        {
            DataColumn prodColumn = new DataColumn("PRODUCT", typeof(string));
            DataColumn monthColumn = new DataColumn("MONTH", typeof(string));
            DataColumn qtyColumn = new DataColumn("QTY", typeof(int));

            dt.Columns.Add(prodColumn);
            dt.Columns.Add(monthColumn);
            dt.Columns.Add(qtyColumn);

            DataRow row = dt.NewRow();

            row[prodColumn] = "APPLE";
            row[monthColumn] = "JANUARY";
            row[qtyColumn] = 10;
            dt.Rows.Add(row);

            row = dt.NewRow();
            row[prodColumn] = "APPLE";
            row[monthColumn] = "FEBRUARY";
            row[qtyColumn] = 12;
            dt.Rows.Add(row);

            row = dt.NewRow();
            row[prodColumn] = "BANANA";
            row[monthColumn] = "JANUARY";
            row[qtyColumn] = 13;
            dt.Rows.Add(row);

            row = dt.NewRow();
            row[prodColumn] = "BANANA";
            row[monthColumn] = "FEBRUARY";
            row[qtyColumn] = 10;
            dt.Rows.Add(row);

            row = dt.NewRow();
            row[prodColumn] = "ORANGE";
            row[monthColumn] = "JANUARY";
            row[qtyColumn] = 12;
            dt.Rows.Add(row);

            row = dt.NewRow();
            row[prodColumn] = "ORANGE";
            row[monthColumn] = "FEBRUARY";
            row[qtyColumn] = 17;
            dt.Rows.Add(row);

            return dt;
        }

        private void SetSpreadSheetData(DataTable dt)
        {
            this.spreadsheetControl1.BeginUpdate();

            Worksheet sheet = this.spreadsheetControl1.Document.Worksheets[0];
            sheet.Name = "FRUIT";//Sheet 이름 설정

            //컬럼 Row 추가
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                Cell cell = sheet.Rows[0][i];
                SetCellStyle(cell, true, 9, Color.LightPink);//Cell Style 설정
                cell.SetValue(dt.Columns[i].ToString());
            }

            //Data Row 추가
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    Cell cell = sheet.Rows[i + 1][j];
                    SetCellStyle(cell, false, 9, Color.White);//Cell Style 설정
                    cell.SetValue(dt.Rows[i][j]);
                }
            }

            //Data 크기에 맞게 Cell 사이즈 조정
            sheet.GetUsedRange().AutoFitColumns();
            sheet.GetUsedRange().AutoFitRows();

            this.spreadsheetControl1.EndUpdate();
        }

        //Cell Style 설정
        private void SetCellStyle(Cell cell, bool isBold, int fontSize, Color fillColor)
        {
            cell.Font.Bold = isBold;
            cell.Font.Size = fontSize;
            cell.FillColor = fillColor;
            cell.Borders.SetAllBorders(Color.Black, BorderLineStyle.Thin);
        }
    }
}


 

 

 

5. 실행결과

 

반응형

댓글