表格视图 表格视图 表格视图
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;
}