前两天开发了个Winform操作Excel和数据库的一个小程序,把Winform的一些东西又给捡了起来,当中又学到了一些新的东西,特来写出来留作纪念。
一、CSKIN美化框架的使用
刚开始做的时候,发现Winform的界面是有点丑了,但又不想换成WPF,所以就找到了这个框架,挺好用的,下载一个dll,
引用到项目里就好了。具体步骤:
①在其官网下载压缩包,,其内容文件如下。
②在VS的工具箱里新建个组,然后直接把下载中的一个dll文件给拖进去(这里我引用的是CSkin 4.0下的CSkin.dll),
就算引用完成,之后这个组里就会有这个框架里所带的控件。它的使用方法和winform里的控件都一样,这一点还是挺方便的。
具体的使用方法见使用教程,里面说的很清楚。,边一张图便是美化过后的界面。
二、Aspose.Cells,DataTable,DataGridView的使用。
这次因为有一个功能是显示Excel的内容到DataGridView上,虽然知道操作Excel有很多方法,但是用着感觉都不是太好。这次找到了一个操作Excel比较好的插件【Aspose.Cells】。听说是兼容性比较好,什么wps,office 07,13的都没问题,而且代码写得也比较少。 下面是一段Excel导出到DataTable的代码。
获取excel的内容到Datatable param name static DataTable GetImportExcelDataTable(string fileName) { Workbook workbook = new Workbook(fileName); Worksheet sheet ; Cells cells = sheet.Cells; //将表中的信息转到datatable DataTable table = cells.ExportDataTable(1,0,cells.MaxRow,6); return RemoveEmpty( table); } 去除DataTable中整行都是空的数据 param name static DataTable RemoveEmpty(DataTable dt) { List<DataRow> removelist = new List<DataRow>(); for (int i = 0; i < dt.Rows.Count; i++) { bool IsNull = true; for (int j = 0; j < dt.Columns.Count; j++) { .ToString().Trim())) { IsNull = false; } } if (IsNull) { removelist.); } } for (int i = 0; i < removelist.Count; i++) { dt.Rows.Remove(removelist); } return dt; }
View Code之后,要将datatable里的内容绑定到DataGridView上,我要改变显示的列名,我去设置DataGridView的上的内容,试了很长时间,也没成功,最后发现想要改变列名,的设置DataTable上的列名,之后再绑定到DataGridView。
OpenFileDialog file = new OpenFileDialog(); file.Filter = "Excel|*.xls;*.xlsx"; if (file.ShowDialog() == DialogResult.OK) { string excelName = file.FileName; DataTable table = ExcelHelper.GetImportExcelDataTable(excelName); .ColumnName = "酒店名称"; .ColumnName = "酒店编号"; .ColumnName = "员工姓名"; .ColumnName = "手机号"; .ColumnName = "状态"; .ColumnName = "邮箱"; dataGridView1.DataSource = table; dataGridView1.Columns.FillWeight = 40; //这个是设置列宽的 }
还有一个是给DataGridView设置编号,这个也是有必要的,先找到RowPostPaint这个事件,之后在事件里写方法,之后DataGridView就能存在编号。