问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c#获取excel文件里的内容有几行

发布网友 发布时间:2022-05-01 21:44

我来回答

4个回答

热心网友 时间:2022-06-23 23:08

/// <summary>
        /// 将 Excel 文件转成 DataTable
        /// </summary>
        /// <param name="serverMapPathExcel">Excel文件及其路径</param>
        /// <param name="strSheetName">工作表名,如:Sheet1$</param>
        /// <param name="isTitleOrDataOfFirstRow">True 第一行是标题,False 第一行是数据</param>
        /// <returns>DataTable</returns>
        public DataTable ExcelToDataTable(string serverMapPathExcel, string strSheetName, bool isTitleOrDataOfFirstRow, int index)
        {
            string HDR = string.Empty;//如果第一行是数据而不是标题的话, 应该写: "HDR=No;"
            if (isTitleOrDataOfFirstRow)
            {
                HDR = "YES";//第一行是标题
            }
            else
            {
                HDR = "NO";//第一行是数据
            }
            //源的定义 
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + serverMapPathExcel + ";" + "Extended Properties='Excel 8.0;HDR=" + HDR + ";IMEX=1';";
            //Sql语句
            //string strExcel = string.Format("select * from [{0}$]", strSheetName); 这是一种方法
            //string strExcel = "select * from [" + strSheetName + "]";
            ////定义存放的数据表
            //DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            //连接数据源
            using (OleDbConnection conn = new OleDbConnection(strConn))
            {
                try
                {
                    conn.Open();
                    DataTable dtSchema = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                    conn.Close();
 
                    //MessageBox.Show(dtSchema.Rows.Count.ToString() + "列:" + dtSchema.Columns.Count);
                    //for (int i = 0; i < dtSchema.Rows.Count; i++)
                    //{
                    //    richTextBox1.Text = richTextBox1.Text + (i + ":" + dtSchema.Rows[i][2].ToString()) + "\n";
                    //}
                    string tableName = dtSchema.Rows[index][2].ToString().Trim();
                    MessageBox.Show(tableName);
                    OleDbCommand OleDbCommand = new OleDbCommand("SELECT * FROM [" + tableName + "A1:AK2000]", conn);//excel的AG列
                    //OleDbCommand OleDbCommand = new OleDbCommand("SELECT * FROM [" + tableName + "]", conn);
                    OleDbDataAdapter oa = new OleDbDataAdapter(OleDbCommand);
                    oa.FillSchema(dt, SchemaType.Source);
                    oa.Fill(dt);
                    //oa.FillSchema(dt2, SchemaType.Source);
                    //oa.Fill(dt2);
                    //RemoveEndEmptyLines(ref dt2, dt2.Rows.Count - 1);
                    //dt2.Rows.RemoveAt(0);
 
                    //dataGridView1.DataSource = dt2;
 
                    //适配到数据源
                    //OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
                    //adapter.Fill(ds, strSheetName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error");
                }
                finally
                {
                    conn.Close();
                    conn.Dispose();
                }
            }
            return dt;//ds.Tables[strSheetName];
        } 
        //调用时
        OpenFileDialog ofd = new OpenFileDialog();
            ofd.Multiselect = false;
            ofd.Title = "请选择入职员工所在的Excel文件[请确保该Excel已关闭]";
            ofd.Filter = "excel file|*.xls|所有文件|*.*";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                int hireIndex = int.Parse(numericUpDown1.Value.ToString("N0"));//入职表格所在的 所在的索引
                //richTextBox1.Text = richTextBox1.Text + hireIndex + "\n";
                try
                {
                    DataTable dt = ExcelToDataTable(ofd.FileName, "Sheet1$", true, hireIndex);
                    richTextBox1.Text = richTextBox1.Text + "行数:" + dt.Rows.Count + "\n";
                    Application.DoEvents();
                    }
                catch (Exception ex) 
                {
                    MessageBox.Show(ex.Message, "Error,请检查excel是否符合规则");
                    richTextBox1.Text = richTextBox1.Text + "导入出错";
                    Application.DoEvents();
                    return;
                }
                richTextBox1.Text = richTextBox1.Text + "操作结束";
                Application.DoEvents();
            }
//返回的DataTable 的行数 就是你要的结果

热心网友 时间:2022-06-23 23:08

将excel数据读取到dataset中,取到Tables(0).Rows.Count 即可。

热心网友 时间:2022-06-23 23:09

问题没表述清楚

热心网友 时间:2022-06-23 23:09

int row_ = xlsheet.UsedRange.Rows.Count;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
热感冒如何快速治疗 上古卷轴5,用nmm装随从mod,但有的随从mod虽然安装了,但在排序时不显示... 上古卷轴5mod安装到data文件以后mod管理器看不见mod,用NNMmod管理器虽然... 合利宝pos机一直显示设备电量已满 请问在长沙的英仙座流星雨到底是在12号还是13号?具体的时间呢? 湖南长沙哪个时间观测18日的狮子座流星? 明天凌晨 8月13日流星雨 在长沙能看到吗 河西岳麓山? 在长沙什么时候能看见流星雨 关于老师的名句子(老师的名言名句) C语言,我输入了char a[10]="123"; 电脑分的是10个地址,还是3个地址... 减肥不能吃的食物? wps转ofd格式 梦见火,坟,石头 铺路 苹果7为什么锁屏以后不能接消息? usb转串口线的驱动都一样吗?为什么我的本装到最后一步就不行了啊??? 装上USB转串口驱动后,这个串口还是识别不出来怎么办? 为什么粘土干了会有弹性?是没干完吗? 坐火车个人原因下错站了铁路部门怎么处理? USB转9针串口 驱动 usb转串口线连上,硬件安装不成功 苹果USB转换接口要怎么使用,需要下载什么驱动吗,直接插上电脑就可以吗,求详细说明。 苹果电脑系统怎么安装usb驱动 恢复iphone怎么进入dfu模式 USB转9针串口线需要驱动程序吗 usb转DB9孔怎么接 Macbook Air 安装 WIN7后安装USB转串口驱动成功,COM口在管理窗口能看到,但在应用软件里看不到,求教! macbook air插usb网线接口要什么驱动 万一坐火车下错了站杂办? mac系统有没有超级终端 oppoa33怎么安装内存卡 世界上一共有多少只大熊猫? 2022年熊猫还有多少只 铭瑄的固态硬盘.sata3.0256g的怎么样? 铭瑄B150-MD4 turbo主板支持的固态硬盘接口? 铭瑄固态硬盘使用起来是否稳定? 谁知道铭瑄固态硬盘质量如何? 铭瑄固态硬盘的性能怎么样啊? 铭瑄a55FE主板可以用sata3固态硬盘吗 铭瑄固态硬盘有哪些优势? 台式电脑铭瑄怎么加硬盘 铭瑄固态硬盘的使用寿命如何? 铭瑄固态硬盘用起来如何? 如何启动笔记本电脑的风扇? 电脑CPU的风扇怎么单独启动 华硕主板电脑CPU风扇报错,需点击F1进入设置,静等CPU风扇启动才能进入系统,请问如何解决? 怎么把studio one的预设用在直播 那种食物含维生素最多? 含维生素最多的食物是什么? 含维生素较多的食物有哪些 什么食物含多种维生素