DataGridView表格视图

表格视图 表格视图 表格视图

1.表格视图

表格视图DataGridView ,即表格控件提行多行多列的表格状的数据展示

基本操作:

1.添加一个表格控件DataGrid View
2.设置列数、列名
3.添加一行数据
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            InitGridView();
        }

        private void InitGridView()
        {
            // 列的设置
            this.gridView.ColumnCount = 4;
            gridView.Columns[0].Name = "学号";
            gridView.Columns[1].Name = "姓名";
            gridView.Columns[2].Name = "性别";
            gridView.Columns[3].Name = "手机号";

            AddRow(new Student(20201001, "major", true, "13810012345"));
            AddRow(new Student(20201002, "major_s",   false, "13610022349"));
            AddRow(new Student(20201003, "major357", true, "13810087282"));
 
        }

        private void AddRow(Student stu)
        {
            object[] row =
            {
                stu.Id ,
                stu.Name,
                stu.Sex ? "男" : "女",
                stu.Phone
            };
            gridView.Rows.Add(row);
            
        }
    }
 class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public bool Sex { get; set; }
        public string Phone { get; set; }

        public Student()
        {

        }
        public Student(int id, string name, bool sex, string phone)
        {
            this.Id = id;
            this.Name = name;
            this.Sex = sex;
            this.Phone = phone;
        }
    }

指定一行数据object[] row =…
实际显示时,取对象的ToString(进行显示

2.表格的使用

表格的属性设置
几个基本的属性:

1 列设定 [杂项] Columns
2 列标题是否可见 [外观] ColumnHeadersVisible
3 行标题是否可见 [外观] RowHeadersVisible
4 允许用户添加 [行为] AllowUserToAddRows
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            InitGridView();
        }

        private void InitGridView()
        {
            // 列的设置
            this.grid.ColumnCount = 4;
            grid.Columns[0].Name = "学号";
            grid.Columns[1].Name = "姓名";
            grid.Columns[2].Name = "性别";
            grid.Columns[3].Name = "手机号";

            AddRow(new Student(20201001, "shao", true, "13810012345"));
            AddRow(new Student(20201002, "li", false, "13610022349"));
            AddRow(new Student(20201003, "wang", true, "13810087282"));

        }

        private void AddRow(Student stu)
        {
            object[] row =
            {
                stu.Id ,
                stu.Name,
                stu.Sex ? "男" : "女",
                stu.Phone
            };
            grid.Rows.Add(row);
        }

        private void addBtn_Click(object sender, EventArgs e)
        {
            object[] row = new object[4];
            row[0] = 20201004;
            row[1] = "zhang";
            row[2] = "男";
            row[3] = "13899990000";
            grid.Rows.Add(row);
            
        }

        // 获取表格的数据
        private void queryBtn_Click(object sender, EventArgs e)
        {
            for(int i=0; i<grid.Rows.Count; i++)
            {
                // 注意顺序:[ col, row ] 
                object id = grid[0, i].Value;
                object name = grid[1, i].Value;
                object sex = grid.Rows[i].Cells[2].Value;
                object phone = grid.Rows[i].Cells[3].Value;
                Console.WriteLine("{0}, {1} , {2}, {3}",
                    id, name, sex, phone);
            }
        }

        private void deleteBtn_Click(object sender, EventArgs e)
        {
            // 单项删除
            // grid.Rows.RemoveAt(0);

            // 多项删除
            foreach (DataGridViewRow row in grid.SelectedRows)
            {
                grid.Rows.Remove(row);
            }
        }


    }
class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public bool Sex { get; set; }
        public string Phone { get; set; }

        public Student()
        {

        }
        public Student(int id, string name, bool sex, string phone)
        {
            this.Id = id;
            this.Name = name;
            this.Sex = sex;
            this.Phone = phone;
        }
    }

表格的基础操作
1增加一行数据

grid.Rows.Add()

2获取所有行的数据

grid[ col, row] <注意顺序
grid.Rows[i].Cells[j].Value

3删除一行

grid.Rows.RemoveAt (i)

删除选中的行

grid.Rows.Remove( )

3.单元格的编辑

单元格的编辑:
两种办法:
1 原位编辑,直接在表格里编辑
2 响应单元格的双击或右击,打开一个对话框需自己定义一个对话框

直接编辑:
1 grid.Columns[0].ReadOnly = false;
ReadQnly为true时,此列不可直接编辑

2 启动编辑
选中该单元格,再单击之,则启动编辑

3 编辑后输入验证
当编辑后按回车,触发[焦点]CellValidating事件

4.单元格的自定义


实例应用:生成Excel格式

        private List<string> ExcelHead = new List<string>() {"A","B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
            "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", };

        public void CreateDataGridView(DataGridView dataGridView,int ColumnCount,int RowsCount)
        {
            dataGridView.ColumnCount = ColumnCount;
            dataGridView.Rows.Add(RowsCount);
            int columnIndex = 0;
            // 列宽自适应
            foreach (DataGridViewColumn column in dataGridView.Columns)
            {
                column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                column.Name = ExcelHead[columnIndex];
                columnIndex++;
            }

        }
        public ModifyExcelModel()
        {
            InitializeComponent();

            CreateDataGridView(dataGridView1, 36, 100);
            CreateDataGridView(dataGridView2, 36, 100);
            CreateDataGridView(dataGridView3, 36, 100);
            CreateDataGridView(dataGridView4, 36, 100);
            CreateDataGridView(dataGridView5, 36, 100);
            
            this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
            this.dataGridView2.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
            this.dataGridView3.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
            this.dataGridView4.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
            this.dataGridView5.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
        }

        private void dataGridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            var grid = sender as DataGridView;
            var rowIdx = (e.RowIndex + 1).ToString();

            var centerFormat = new StringFormat()
            {
                // right alignment might actually make more sense for numbers
                Alignment = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };

            var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, grid.RowHeadersWidth, e.RowBounds.Height);
            e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);

        }

在这里插入图片描述

Excel复制黏贴

using Lead.Detect.Helper;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Lead
{
    public partial class ModifyExcelModel : Form
    {

        private List<string> ExcelHead = new List<string>() {"A","B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
            "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", };

        public void CreateDataGridView(DataGridView dataGridView,int ColumnCount,int RowsCount)
        {
            dataGridView.ColumnCount = ColumnCount;
            dataGridView.Rows.Add(RowsCount);
            int columnIndex = 0;
            // 列宽自适应
            foreach (DataGridViewColumn column in dataGridView.Columns)
            {
                column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                column.Name = ExcelHead[columnIndex];
                columnIndex++;
            }
            for (int i = 0; i < dataGridView.RowCount; i++)
            {
                for (int j = 0; j < dataGridView.ColumnCount; j++)
                {
                    dataGridView.Rows[i].Cells[j].Value = string.Empty;
                }
            }

        }

        private void ModifyExcelModel_Load(object sender, EventArgs e)
        {

        }

        public ModifyExcelModel()
        {
            InitializeComponent();

            CreateDataGridView(dataGridView2, 36, 100);
            CreateDataGridView(dataGridView3, 36, 100);
            CreateDataGridView(dataGridView4, 36, 100);
            CreateDataGridView(dataGridView1, 36, 100);
            CreateDataGridView(dataGridView5, 36, 100);
            
            this.dataGridView2.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
            this.dataGridView3.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
            this.dataGridView4.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
            this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);
            this.dataGridView5.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView_RowPostPaint);

            this.dataGridView1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dataGridView_KeyPress);
            this.dataGridView2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dataGridView_KeyPress);
            this.dataGridView3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dataGridView_KeyPress);
            this.dataGridView4.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dataGridView_KeyPress);
            this.dataGridView5.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dataGridView_KeyPress);
        }

        private void dataGridView_KeyPress(object sender, KeyPressEventArgs e)
        {
            DataGridView dataGridView = sender as DataGridView;
            if (e.KeyChar == 22)
            {
                PasteData(dataGridView);
            }
        }

        /// <summary>
        /// 显示行号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            var grid = sender as DataGridView;
            var rowIdx = (e.RowIndex + 1).ToString();

            var centerFormat = new StringFormat()
            {
                // right alignment might actually make more sense for numbers
                Alignment = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };

            var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, grid.RowHeadersWidth, e.RowBounds.Height);
            e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);

        }

        /// <summary>
        /// Excel粘贴复制功能
        /// </summary>
        /// <param name="dataGridView"></param>
        private void PasteData(DataGridView dataGridView)
        {
            string clipboardText = Clipboard.GetText(); //获取剪贴板中的内容
            if (string.IsNullOrEmpty(clipboardText))
            {
                return;
            }
            int colnum = 0;
            int rownum = 0;
            for (int i = 0; i < clipboardText.Length; i++)
            {
                if (clipboardText.Substring(i, 1) == "\t")
                {
                    colnum++;
                }
                if (clipboardText.Substring(i, 1) == "\n")
                {
                    rownum++;
                }
            }
            colnum = colnum / rownum + 1;
            int selectedRowIndex, selectedColIndex;
            selectedRowIndex = dataGridView.CurrentRow.Index;
            selectedColIndex = dataGridView.CurrentCell.ColumnIndex;
            if (selectedRowIndex + rownum > dataGridView.RowCount || selectedColIndex + colnum > dataGridView.ColumnCount)
            {
                MessageBox.Show("粘贴区域大小不一致");
                return;
            }
            String[][] temp = new String[rownum][];
            for (int i = 0; i < rownum; i++)
            {
                temp[i] = new String[colnum];
            }
            int m = 0, n = 0, len = 0;
            while (len != clipboardText.Length)
            {
                String str = clipboardText.Substring(len, 1);
                if (str == "\t")
                {
                    n++;
                }
                else if (str == "\n")
                {
                    m++;
                    n = 0;
                }
                else
                {
                    temp[m][n] += str;
                }
                len++;
            }
            for (int i = selectedRowIndex; i < selectedRowIndex + rownum; i++)
            {
                for (int j = selectedColIndex; j < selectedColIndex + colnum; j++)
                {
                    dataGridView.Rows[i].Cells[j].Value = temp[i - selectedRowIndex][j - selectedColIndex];
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FileStream file;
            file = new FileStream("REPORT_[lanse-101-200(3)]_[2021-08-04@16-02-24].xlsx", FileMode.Open, FileAccess.Read);
            HSSFWorkbook wk;
            wk = new HSSFWorkbook(file);
            file.Close();
            ISheet image_sheet = wk.GetSheet("Images");
            ISheet confidence_sheet = wk.GetSheet("Confidences");
            int rowsCount = image_sheet.PhysicalNumberOfRows; //取行Excel的最大行数
            int colsCount = image_sheet.GetRow(0).PhysicalNumberOfCells;//取得Excel的列数
            int confidence_sheet_rowsCount = confidence_sheet.PhysicalNumberOfRows; //取行Excel的最大行数
            int confidence_sheet_colsCount = confidence_sheet.GetRow(0).PhysicalNumberOfCells;//取得Excel的列数
        }

        private void button2_Click(object sender, EventArgs e)
        {
             传递元素
            //List<string> sheetNameList = new List<string>() { "Summary", "OK-NG", "Confidence Classes", "Confidences", "Images" };
            //List<int> sheetColumnWidthList = new List<int>() {30,30,30,30,30 };
            //List<List<string>> sheetHeads = new List<List<string>>();

             生成sheetHeads传递元素

            //List<string> SummaryHead = new List<string>();
            //List<string> OKNGHead = new List<string>();
            //List<string> ConfidenceClassesHead = new List<string>();
            //List<string> confiendenceHead = new List<string>();
            //List<string> ImagesHead = new List<string>();


            //string confidenceSheetHead_S1 = $"{sheet1Head1.Loaction1},{sheet1Head1.Loaction2},{sheet1Head1.Loaction3},{sheet1Head1.Loaction4},{sheet1Head1.Loaction5},{sheet1Head1.Loaction6},{sheet1Head1.Loaction7},{sheet1Head1.Loaction8},{sheet1Head1.Loaction9},{sheet1Head1.Loaction10},{sheet1Head1.Loaction11},{sheet1Head1.Loaction12},{sheet1Head1.Loaction13},{sheet1Head1.Loaction14},{sheet1Head1.Loaction15},{sheet1Head1.Loaction16},{sheet1Head1.Loaction17},{sheet1Head1.Loaction18},{sheet1Head1.Loaction19},{sheet1Head1.Loaction20},{sheet1Head1.Loaction21},{sheet1Head1.Loaction22},{sheet1Head1.Loaction23},{sheet1Head1.Loaction24},{sheet1Head1.Loaction25},{sheet1Head1.Loaction26},{sheet1Head1.Loaction27},{sheet1Head1.Loaction28},{sheet1Head1.Loaction29},{sheet1Head1.Loaction30},{sheet1Head1.Loaction31},{sheet1Head1.Loaction32},{sheet1Head1.Loaction33},{sheet1Head1.Loaction34},{sheet1Head1.Loaction35},{sheet1Head1.Loaction36}";
            //string confidenceSheetHead_S2 = $"{sheet1Head2.Loaction1},{sheet1Head2.Loaction2},{sheet1Head2.Loaction3},{sheet1Head2.Loaction4},{sheet1Head2.Loaction5},{sheet1Head2.Loaction6},{sheet1Head2.Loaction7},{sheet1Head2.Loaction8},{sheet1Head2.Loaction9},{sheet1Head2.Loaction10},{sheet1Head2.Loaction11},{sheet1Head2.Loaction12},{sheet1Head2.Loaction13},{sheet1Head2.Loaction14},{sheet1Head2.Loaction15},{sheet1Head2.Loaction16},{sheet1Head2.Loaction17},{sheet1Head2.Loaction18},{sheet1Head2.Loaction19},{sheet1Head2.Loaction20},{sheet1Head2.Loaction21},{sheet1Head2.Loaction22},{sheet1Head2.Loaction23},{sheet1Head2.Loaction24},{sheet1Head2.Loaction25},{sheet1Head2.Loaction26},{sheet1Head2.Loaction27},{sheet1Head2.Loaction28},{sheet1Head2.Loaction29},{sheet1Head2.Loaction30},{sheet1Head2.Loaction31},{sheet1Head2.Loaction32},{sheet1Head2.Loaction33},{sheet1Head2.Loaction34},{sheet1Head2.Loaction35},{sheet1Head2.Loaction36}";
            //string confidenceSheetHead_S3 = $"{sheet1Head3.Loaction1},{sheet1Head3.Loaction2},{sheet1Head3.Loaction3},{sheet1Head3.Loaction4},{sheet1Head3.Loaction5},{sheet1Head3.Loaction6},{sheet1Head3.Loaction7},{sheet1Head3.Loaction8},{sheet1Head3.Loaction9},{sheet1Head3.Loaction10},{sheet1Head3.Loaction11},{sheet1Head3.Loaction12},{sheet1Head3.Loaction13},{sheet1Head3.Loaction14},{sheet1Head3.Loaction15},{sheet1Head3.Loaction16},{sheet1Head3.Loaction17},{sheet1Head3.Loaction18},{sheet1Head3.Loaction19},{sheet1Head3.Loaction20},{sheet1Head3.Loaction21},{sheet1Head3.Loaction22},{sheet1Head3.Loaction23},{sheet1Head3.Loaction24},{sheet1Head3.Loaction25},{sheet1Head3.Loaction26},{sheet1Head3.Loaction27},{sheet1Head3.Loaction28},{sheet1Head3.Loaction29},{sheet1Head3.Loaction30},{sheet1Head3.Loaction31},{sheet1Head3.Loaction32},{sheet1Head3.Loaction33},{sheet1Head3.Loaction34},{sheet1Head3.Loaction35},{sheet1Head3.Loaction36}";
            //string confidenceSheetHead_S4 = $"{sheet1Head4.Loaction1},{sheet1Head4.Loaction2},{sheet1Head4.Loaction3},{sheet1Head4.Loaction4},{sheet1Head4.Loaction5},{sheet1Head4.Loaction6},{sheet1Head4.Loaction7},{sheet1Head4.Loaction8},{sheet1Head4.Loaction9},{sheet1Head4.Loaction10},{sheet1Head4.Loaction11},{sheet1Head4.Loaction12},{sheet1Head4.Loaction13},{sheet1Head4.Loaction14},{sheet1Head4.Loaction15},{sheet1Head4.Loaction16},{sheet1Head4.Loaction17},{sheet1Head4.Loaction18},{sheet1Head4.Loaction19},{sheet1Head4.Loaction20},{sheet1Head4.Loaction21},{sheet1Head4.Loaction22},{sheet1Head4.Loaction23},{sheet1Head4.Loaction24},{sheet1Head4.Loaction25},{sheet1Head4.Loaction26},{sheet1Head4.Loaction27},{sheet1Head4.Loaction28},{sheet1Head4.Loaction29},{sheet1Head4.Loaction30},{sheet1Head4.Loaction31},{sheet1Head4.Loaction32},{sheet1Head4.Loaction33},{sheet1Head4.Loaction34},{sheet1Head4.Loaction35},{sheet1Head4.Loaction36}";
            //string confidenceSheetHead_S5 = $"{sheet1Head4.Loaction1},{sheet1Head4.Loaction2},{sheet1Head4.Loaction3},{sheet1Head4.Loaction4},{sheet1Head4.Loaction5},{sheet1Head4.Loaction6},{sheet1Head4.Loaction7},{sheet1Head4.Loaction8},{sheet1Head4.Loaction9},{sheet1Head4.Loaction10},{sheet1Head4.Loaction11},{sheet1Head4.Loaction12},{sheet1Head4.Loaction13},{sheet1Head4.Loaction14},{sheet1Head4.Loaction15},{sheet1Head4.Loaction16},{sheet1Head4.Loaction17},{sheet1Head4.Loaction18},{sheet1Head4.Loaction19},{sheet1Head4.Loaction20},{sheet1Head4.Loaction21},{sheet1Head4.Loaction22},{sheet1Head4.Loaction23},{sheet1Head4.Loaction24},{sheet1Head4.Loaction25},{sheet1Head4.Loaction26},{sheet1Head4.Loaction27},{sheet1Head4.Loaction28},{sheet1Head4.Loaction29},{sheet1Head4.Loaction30},{sheet1Head4.Loaction31},{sheet1Head4.Loaction32},{sheet1Head4.Loaction33},{sheet1Head4.Loaction34},{sheet1Head4.Loaction35},{sheet1Head4.Loaction36}";
            //string confidenceSheetHead_S6 = $"{sheet1Head4.Loaction1},{sheet1Head4.Loaction2},{sheet1Head4.Loaction3},{sheet1Head4.Loaction4},{sheet1Head4.Loaction5},{sheet1Head4.Loaction6},{sheet1Head4.Loaction7},{sheet1Head4.Loaction8},{sheet1Head4.Loaction9},{sheet1Head4.Loaction10},{sheet1Head4.Loaction11},{sheet1Head4.Loaction12},{sheet1Head4.Loaction13},{sheet1Head4.Loaction14},{sheet1Head4.Loaction15},{sheet1Head4.Loaction16},{sheet1Head4.Loaction17},{sheet1Head4.Loaction18},{sheet1Head4.Loaction19},{sheet1Head4.Loaction20},{sheet1Head4.Loaction21},{sheet1Head4.Loaction22},{sheet1Head4.Loaction23},{sheet1Head4.Loaction24},{sheet1Head4.Loaction25},{sheet1Head4.Loaction26},{sheet1Head4.Loaction27},{sheet1Head4.Loaction28},{sheet1Head4.Loaction29},{sheet1Head4.Loaction30},{sheet1Head4.Loaction31},{sheet1Head4.Loaction32},{sheet1Head4.Loaction33},{sheet1Head4.Loaction34},{sheet1Head4.Loaction35},{sheet1Head4.Loaction36}";
            //string confidenceSheetHead_S7 = $"{sheet1Head4.Loaction1},{sheet1Head4.Loaction2},{sheet1Head4.Loaction3},{sheet1Head4.Loaction4},{sheet1Head4.Loaction5},{sheet1Head4.Loaction6},{sheet1Head4.Loaction7},{sheet1Head4.Loaction8},{sheet1Head4.Loaction9},{sheet1Head4.Loaction10},{sheet1Head4.Loaction11},{sheet1Head4.Loaction12},{sheet1Head4.Loaction13},{sheet1Head4.Loaction14},{sheet1Head4.Loaction15},{sheet1Head4.Loaction16},{sheet1Head4.Loaction17},{sheet1Head4.Loaction18},{sheet1Head4.Loaction19},{sheet1Head4.Loaction20},{sheet1Head4.Loaction21},{sheet1Head4.Loaction22},{sheet1Head4.Loaction23},{sheet1Head4.Loaction24},{sheet1Head4.Loaction25},{sheet1Head4.Loaction26},{sheet1Head4.Loaction27},{sheet1Head4.Loaction28},{sheet1Head4.Loaction29},{sheet1Head4.Loaction30},{sheet1Head4.Loaction31},{sheet1Head4.Loaction32},{sheet1Head4.Loaction33},{sheet1Head4.Loaction34},{sheet1Head4.Loaction35},{sheet1Head4.Loaction36}";

            //List<string> temp1 = new List<string>() { confidenceSheetHead_S1, confidenceSheetHead_S2,confidenceSheetHead_S3,confidenceSheetHead_S4,confidenceSheetHead_S5,confidenceSheetHead_S6,confidenceSheetHead_S7};
            //confiendenceHead.AddRange(temp1);


            //SummaryHead.Add("test1,test2,test3,ytttt");
            //OKNGHead.Add("te999st1,tes55t2,t55est3,yt55ttt");
            //ConfidenceClassesHead.Add("test1,test52,test3,ytttt");

            //ImagesHead.Add("test1,test2,te5645643st3,ytttt");


            //sheetHeads.Add(SummaryHead);
            //sheetHeads.Add(OKNGHead);
            //sheetHeads.Add(ConfidenceClassesHead);
            //sheetHeads.Add(confiendenceHead);
            //sheetHeads.Add(ImagesHead);
 
            //NPOIHelper.CreatOne("TestExcel.major", sheetNameList, sheetHeads, sheetColumnWidthList);
            //MessageBox.Show("Excel表头生成完毕");
        }




        /// <summary>
        /// 数据保存到本地
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Save_Click(object sender, EventArgs e)
        {

            // 主任务,保存到本地,一行换一行
            List<string> oneRow = new List<string>();
            int columnIndex = 0;
            int rowIndex = 0;

            try
            {
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    for (int j = 0; j < dataGridView1.ColumnCount; j++)
                    {
                        oneRow.Add(dataGridView1.Rows[rowIndex].Cells[columnIndex].Value.ToString());
                    }
                    // 逐行写入本地txt
                    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"ExcelHeads.txt", true))
                    {
                        foreach (string line in oneRow)
                        {
                            file.WriteLine(string.Join(",", oneRow.ToArray()), Encoding.Default);
                            oneRow.Clear();
                        }
                    }

                }
            }
            catch(Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
            



           
        }

        private void textBox9_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox10_TextChanged(object sender, EventArgs e)
        {

        }

        private void label9_Click(object sender, EventArgs e)
        {

        }

        private void label10_Click(object sender, EventArgs e)
        {

        }

        private void dataGridView5_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }


    }
}

将DataGridView保存至excel(csv)

  public void DownloadDataGridView(DataGridView dgv,string path)
       {

           //使用默认编码
           using (StreamWriter sw = new StreamWriter(path, false,Encoding.UTF8))
           {
               string str = "";
               try
               {
                   for (int i = 0; i < dgv.ColumnCount; i++)
                   {
                       // 表头
                       str += dgv.Columns[i].HeaderText + ",";
                       str += "\t";
                   }//end for
                    // 写入表头
                   sw.WriteLine(str);
                   // 一行
                   for (int j = 0; j < dgv.Rows.Count - 1; j++)
                   {
                       string strTemp = "";
                       // 
                       for (int k = 0; k < dgv.Columns.Count; k++)
                       {
                           object obj = dgv.Rows[j].Cells[k].Value;
                           if (obj != null)
                           {
                               strTemp += dgv.Rows[j].Cells[k].Value.ToString() + ",";
                           }//end if
                           else
                           {
                               strTemp = "" + ",";
                           }//end else
                            // 换行
                           strTemp += "\t";
                       }//end for k
                       sw.WriteLine(strTemp);
                   }//end for j
                   sw.Close();
               }//end try
               catch (Exception ex)
               {
                   MessageBox.Show(ex.Message);
               }//end catch
               finally
               {
                   sw.Close();
               }//end finally
           }
       
       }




       private void button4_Click(object sender, EventArgs e)
       {

           DownloadDataGridView(dataGridView1,"data1.csv");
       }

将excel(csv)读取到DataGridView

        /// <summary>
        /// 读取csv文件显示到DataGridView
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static System.Data.DataTable readCSV(string fileName)
        {

            DataTable dt = new DataTable();
            try
            {
                FileStream fs = new FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);


                //记录每次读取的一行记录
                string strLine = "";
                //记录每行记录中的各字段内容
                string[] aryLine;
                //标示列数
                int columnCount = 0;
                //标示是否是读取的第一行
                bool IsFirst = true;

                //逐行读取CSV中的数据
                while ((strLine = sr.ReadLine()) != null)
                {
                    aryLine = strLine.Split(',');
                    if (IsFirst == true)
                    {
                        IsFirst = false;
                        columnCount = aryLine.Length;
                        //创建列
                        for (int i = 0; i < columnCount; i++)
                        {

                            DataColumn dc = new DataColumn(aryLine[i]);
                            dt.Columns.Add(dc);

                        }
                    }
                    else
                    {
                        int nullCount = 0;
                        DataRow dr = dt.NewRow();
                        for (int j = 0; j < columnCount; j++)
                        {
                            if (aryLine[j] != "")
                            {
                                dr[j] = aryLine[j];

                            }
                            else
                            {
                                nullCount += 1;
                            }
                        }
                        if (nullCount >= 6)
                        {

                        }
                        else
                        {
                            dt.Rows.Add(dr);
                        }

                    }
                }

                sr.Close();
                fs.Close();
                return dt;
            }
            catch
            {

                return dt = null;
            }
        }


实例:显示图像(类excel)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

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


        private void AddRow(Student stu)
        {
            object[] row =
            {
                stu.Id ,
                stu.Img,
   
            };
            dataGridView1.Rows.Add(row);
        }



        private void XXX_Click(object sender, EventArgs e)
        {
            // 列的设置
            this.dataGridView1.ColumnCount = 4;
            dataGridView1.Columns[0].Name = "学号";
            dataGridView1.Columns[1].Name = "姓名";
            dataGridView1.Columns[2].Name = "性别";

            Bitmap bmp = new Bitmap("D:\\1.png");
            AddRow(new Student("13810012345", bmp));
            AddRow(new Student("13610022349", bmp));
            AddRow(new Student("13810087282", bmp));

        }

        private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            int x = e.ColumnIndex;
            int y = e.RowIndex; 
        }
    }
}

    public class Student
    {
        public string Id { get; set; }
        public Bitmap Img { get; set; }


        public Student(string id, Bitmap img)
        {
            this.Id = id;
            this.Img = img;
        }
    }

显示图像

在这里插入图片描述

在这里插入图片描述

dataGridView1.Rows[0].Cells["img"].Value = Image.FromFile(@"F:\img\123.png");//通过路径得到一个Image对象

点击单元格,获取单元格内容

        /// <summary>
        /// 点击单元格
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgv_DefectedDefectInfo_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex >= 0) //确保有效行列索引
            {
                string cellValue = dgv_DefectedDefectInfo.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                //MessageBox.Show("所选单元格的值为:" + cellValue);
                if(cellValue.Equals("System.Drawing.Bitmap"))
                {
                    FrmShowDisplay frm = new FrmShowDisplay();
                    frm.setShowImage((Bitmap)dgv_DefectedDefectInfo.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
                    frm.ShowDialog();
                }

      
            }
        }

去除左边的框和居中显示

在这里插入图片描述
在这里插入图片描述

设置行高

       private void InitializeImagePanel()
       {
           // 假设你有一些图像资源路径,这里我们使用占位符  
           string[] imagePaths = { @"D:\\1.png", @"D:\\1.png", @"D:\\1.png", @"D:\\1.png", @"D:\\1.png", @"D:\\1.png" };
           int count = 0;
           foreach (string imagePath in imagePaths)
           {
               object[] row =
               {
                  new Bitmap(imagePath)
               };
              
               dgv_ImageList.Rows.Add(row);
               dgv_ImageList.Rows[count].Height = 100;
               count++;
           }
         
       }

单击单元格触发函数-CellClick

        private void dgv_ImageList_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1 || e.RowIndex==dgv_ImageList.Rows.Count-1)
                return;
            int Rindex = e.RowIndex;
            imgPath = ImagePathShowList[Rindex];
            // 清空绘制框信息
            rect2ImgRectPoints_Dict.Clear();
            rect2DefectName_Dict.Clear();
            rect2DrawedTime_Dict.Clear();
            rectPos.Clear();
            // 图像路径
            this.imgPath = imgPath;
            // 根据图像大小,设置pictureBox的高宽显示大小,让图像不变形
            //设置显示大小,和起始位置居中改变pictureBox高宽

            Bitmap img = new Bitmap(imgPath);
            int imgWidth = img.Width;
            int imgHeight = img.Height;
            float heightWidthRate = (float)imgHeight / (float)imgWidth;
            pictureBox_Show.Height = (int)(650 * heightWidthRate);
            pictureBox_Show.Width = 650;
            pictureBox_Show.Location = new Point(60, 30);
            // 显示图像
            this.pictureBox_Show.Image = new Bitmap(imgPath);

            // 显示图像路径
            this.textImgPath.Text = imgPath;
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值