3.1、Excel 导入导出DataTable

1、导入DataGridView:

http://www.jb51.net/article/43817.htm

2、使用Npoi 两种方式:

https://www.cnblogs.com/mora1988/p/5715097.html

https://zhidao.baidu.com/question/1608136706392015267.html

https://www.cnblogs.com/mora1988/p/5715097.html

3、目前使用的方式:

https://blog.csdn.net/qq_26054303/article/details/48291955

4、C#  DataGridView 第二次绑定数据源 不能正常显示数据?

 

if (r == System.Windows.Forms.DialogResult.OK)//【注意,这块只能这么写,如果写成if (r == System.Windows.Forms.DialogResult.OK)  则无反应】

 

 5、导入Excel到界面上,将excel分为三个datatable,一个是左上角的,一个是Parameter到结尾【主要用于 显示GridView的第一列,然后筛选一下就可以了!】,一个是Parameter到DefaultValue.

第一个DT:对应Excel的范围是[C7,W160]   Form4,BtnImportExcel

 

        private void btnImport_Click(object sender, EventArgs e)
        {
            //ExcelHelper.ExcelToDT(@"C:\Users\wanglina\Desktop\20180402085400PMHeating.xls");
            string fileFullName = "";

            OpenFileDialog saveDialog = new OpenFileDialog();
            saveDialog.DefaultExt = "xls";
            saveDialog.Filter = "Excel文件(*.xls,*.xlsx)|*.xls;*.xlsx;"; 
            //saveDialog.FileName = fileFullName;
            DialogResult r = saveDialog.ShowDialog();
            fileFullName = saveDialog.FileName;

            if (r != System.Windows.Forms.DialogResult.OK)//【注意,这块只能这么写,如果写成if (r == System.Windows.Forms.DialogResult.OK)  则无反应】
                return;

            dgvEX1.Columns.Clear();//dataGridViewEX1.DataSourceEX = null;//不好使!!
            DataTable dt = ExcelHelper.ExcelToDT(fileFullName);

            List<string> filter = new List<string>();
            filter.Add("ID");
            filter.Add("Parameter Name");
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                if (dt.Rows.Count == 0) return;
                if (dt.Columns[i].ColumnName.Contains("Step") && dt.Rows[0][i].ToString() != "")
                    filter.Add(dt.Columns[i].ColumnName);
            }
            DataTable dtStep = dt.DefaultView.ToTable(false, filter.ToArray());//进行列筛选

            ///进行列筛选(PM是137行,TLLHeating是45行,但是不知道为什么,可能是Excel有记忆模式,每次 导入excel的时候 PM是137行,
            ///但是 TLLHeating也是137行(前45行有数据,后面的全是空,然后导到DataGridView中,不好看,因此这里加上一个 对ID列的数据筛选,当 ID筛去ID为空的DataTable))
            var dv = dtStep.DefaultView;
            dv.RowFilter="ID is not null";
            dtStep = dv.ToTable();

            dgvEX1.DataSourceEX = dtStep;
        }
View Code

 

Q、进行列筛选(PM是137行,TLLHeating是45行,但是不知道为什么,可能是Excel有记忆模式,每次 导入excel的时候 PM是137行,但是 TLLHeating也是137行(前45行有数据,后面的全是空,然后导到DataGridView中,不好看,因此这里加上一个 对ID列的数据筛选,当 ID筛去ID为空的DataTable))

 

 

 

 

 

增:

Datatable 筛选行和筛选列

 

 

 6、https://www.cnblogs.com/brucemengbm/p/6863209.html

近期在用C#写一个创建Excel并将数据导出到Excel的WinForm程序

让我对OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2有了深刻的认识!

參数HDR的值:

HDR=Yes。这代表第一行是标题。不做为数据使用 ,假设用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
參数Excel 8.0 对于Excel 97以上到2003版本号都用Excel 8.0,2007或2010的都用Extended Properties=Excel 12.0

IMEX ( IMport EXport mode )设置
  IMEX 有三种模式:
  0 is Export mode
  1 is Import mode
  2 is Linked mode (full update capabilities)
  我这里特别要说明的就是 IMEX 參数了,由于不同的模式代表著不同的读写行为:
  当 IMEX=0 时为“汇出模式”。这个模式开启的 Excel 档案仅仅能用来做“写入”用途。


  当 IMEX=1 时为“汇入模式”。这个模式开启的 Excel 档案仅仅能用来做“读取”用途。
  当 IMEX=2 时为“连結模式”。这个模式开启的 Excel 档案可同一时候支援“读取”与“写入”用途。


意义例如以下:
0 ---输出模式;
1---输入模式;
2----链接模式(全然更新能力)

 

posted @ 2018-04-17 20:25  你会什么  阅读(407)  评论(0)    收藏  举报