2 qq 36047627 qq_36047627 于 2016.09.22 19:12 提问

求网友 excel导入datagridview时 中出现很多多余的空行 怎么办?

图片说明

    public void EcxelToDataGridView(string filePath, DataGridView dgv)
    {
        //根据路径打开一个Excel文件并将数据填充到DataSet中
        string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";//导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入
        OleDbConnection conn = new OleDbConnection(strConn);       //创建数据源连接对象,并实例化
        conn.Open();  //打开数据源连接
        string strExcel = "";      //表示从Excel文件获取数据所在栏
        OleDbDataAdapter myCommand = null;   //表示一个数据连接,用于获取导入文件数据
        DataSet ds = null;       //开辟一块内存,用于存储导入文件数据
        strExcel = "select  * from   [sheet1$]";
        myCommand = new OleDbDataAdapter(strExcel, strConn);
        ds = new DataSet();
        myCommand.Fill(ds, "table1");

        //根据DataGridView的列构造一个新的DataTable
        DataTable tb = new DataTable();
        //逐列或许数据表格中DataGridView控件各列
        foreach (DataGridViewColumn dgvc in dgv.Columns)
        {
            if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))
            {
                DataColumn dc = new DataColumn();
                dc.ColumnName = dgvc.DataPropertyName;
                //dc.DataType = dgvc.ValueType;//若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一个数据源那怕是空的DataTable
                tb.Columns.Add(dc);
            }
        }
        //根据Excel的行逐一对上面构造的DataTable的列进行赋值
        foreach (DataRow excelRow in ds.Tables[0].Rows)
        {
            int i = 0;
            DataRow dr = tb.NewRow();
            foreach (DataColumn dc in tb.Columns)
            {
                dr[dc] = excelRow[i];
                i++;
            }
            tb.Rows.Add(dr);
        }
        //在DataGridView中显示导入的数据
        //dgv.Columns.Clear();
        //dgv.  = tb;
        for (int curRow = 1; curRow < tb.Rows.Count; curRow++)
        {
            dgv.Rows.Add(1);
            for (int curCol = 0; curCol < tb.Columns.Count; curCol++)
            {

                dgv.Rows[curRow - 1].Cells[curCol].Value = tb.Rows[curRow][curCol].ToString();
            }
        }


    }



    private void button2_Click(object sender, EventArgs e)
    {



        //打开一个文件选择框
        OpenFileDialog ofd = new OpenFileDialog();


        //为了获取特定的系统文件夹,可以使用System.Environment类的静态方法GetFolderPath()。该方法接受一个Environment.SpecialFolder枚举,其中可以定义要返回路径的哪个系统目录
        ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        ofd.Filter = "Excel文件(*.xls)|*.xls";      //使导入文件格式为03版Excel文件
        //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名
        ofd.ValidateNames = true;
        ofd.CheckFileExists = true;  //验证路径有效性
        string strName = string.Empty;       //用来储存导入文件的文件名

        if (ofd.ShowDialog() == DialogResult.OK)        //判断是否存在导入文件
        {
            strName = ofd.FileName;
        }
             if (strName == "")
            {
                //如果没有选择导入文件,进行提示,退出当前操作。
                MessageBox.Show("没有选择Excel文件!无法进行数据导入");
                return;
            }
            //调用导入数据方法
        EcxelToDataGridView(strName, dataGridView1);
    }

1个回答

seeze
seeze   2016.09.22 20:23

//根据Excel的行逐一对上面构造的DataTable的列进行赋值
foreach (DataRow excelRow in ds.Tables[0].Rows)
{
int i = 0;
DataRow dr = tb.NewRow();
foreach (DataColumn dc in tb.Columns)
{
//在这里对excelRow[i]进行空值判断

            dr[dc] = excelRow[i];
            i++;
        }
        tb.Rows.Add(dr);
    }
seeze
seeze 回帖格式没弄好
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C# 读取Excel表格出现空白行原因及解决办法
在应用系统中,Excel数据的导入、导出和打印功能需求肯定是再常见不过的功能了。然而我们在做Excel导入的工程中往往会为报错,这类错误可能在业务层面你有空值校验的提示,但是从Excel打开后的内容用人类的肉眼你是看不出来有空行的,或者Excel的内容不存在你系统所报错提醒信息的。那么原因到底出在哪儿呢?心细的程序员或仔细观察和监视读取Excel返回结果集下面有些许空白行,就是这些空白行在作怪,它
C# 怎样让DataGridView不显示最下面那个空行
C# code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->this.dataGridView1.AllowUserToAddRows = false;或者在属性中更改AllowUserToAddRows
解决写入csv文件时出现多余空行的问题
问题:在把一个由元组构成的列表写入csv文件时,出现多余的空行代码如下:import csv x = [3, 5, 7, 8] y = ['图书馆', '教室', '宿舍', '食堂'] # 待写入的结果 result = list(zip(x, y)) csv_file = open('result.csv', 'w') # 写入csv文件 with csv_file as f: ...
文字复制到WORD,删除多余空格或空行
一般在将网页内容复制到word文档中时,会出现一些问题。解决办法: 1、清除多余的空格(点一下显示比例旁边的一个按钮即可显示,下同) 空格可以全部替换为空(去掉) 1)注意有两种空格,英文的小点和中文的方框将其复制, 2)然后编辑-查找,用Ctrl+V粘贴到查找后
jxl操作Excel导入数据库 去掉空行 方法 详解
jxl因其快速小巧受到大家的欢迎,但是jxl还是有许多不尽如人意的地方。 本文旨在解决jxl读取excel数据时无法自动取掉空行的问题,其实就是添加一个方法。 //返回去掉空行的记录数 private int getRightRows(Sheet sheet) { int rsCols =
xlsx转csv每行出现一行空行
with open(subfile_path,'w', newline='',encoding='utf-8') as f:     write = csv.writer(f)     for row_num in range(sheet.nrows):         row_value = sheet.row_values(row_num)    write.writerow(row...
用UEditor保存后出现多余空行问题的解决办法
用UEditor保存后出现多余空行问题的解决办法,其实很简单
使用反射,在Excel导入时判断是否有空行
在用POI进行Excel导入时,发觉有这种情况。 当某一行有格式的时候,POI会认为这行有数据。 用反射的方法可以排除这种数据。 public static boolean isBlankObject(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, I
如何批量删除Excel空行
  我们在利用Excel统计与分析对象时,数据的录入工作不可能一蹴而就,记录的添加、删除、剪切、合并是少不了的,在经过多次的编辑修改过程之后,在表格中往往会出现许多的空行。这些空行的存在既不美观,同时也影响了数据分析的结果,通常情况下要将其删除。如果表格中的空行较少,那么只需一行一行地删除,但是如果工作表很大(比如数千行),而表格中的空行又许多,手动一行一行删除,无疑会耗费许多的时力。如果大家经常
去掉DataGridView最后一行的空白行,删除空白行
//不显示出dataGridView1的最后一行空白    dataGridView1.AllowUserToAddRows = false;     直接在LODE事件