苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 9428|回复: 3

[其他] 怎么获得excel文档中sheet1表的某一列数据

[复制链接]
发表于 2013-8-20 19:22:17 | 显示全部楼层 |阅读模式
怎么获得excel文档中sheet1表的某一列数据,,,,,求实现代码,谢谢啦!!


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-8-21 09:16:05 | 显示全部楼层
读:       HSSFWorkbook hssfworkbook;        void InitializeWorkbook(string path)        {            //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock.            //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records are added.             using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))            {                hssfworkbook = new HSSFWorkbook(file);            }        }        void ConvertToDataTable()        {            ISheet sheet = hssfworkbook.GetSheetAt(0);            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();            DataTable dt = new DataTable();            for (int j = 0; j < 5; j++)            {                dt.Columns.Add(Convert.ToChar(((int)'A')+j).ToString());            }            while (rows.MoveNext())            {                IRow row = (HSSFRow)rows.Current;                DataRow dr = dt.NewRow();                for (int i = 0; i < row.LastCellNum; i++)                {                    ICell cell = row.GetCell(i);                    if (cell == null)                    {                        dr = null;                    }                    else                    {                        dr = cell.ToString();                    }                }                dt.Rows.Add(dr);            }            dataSet1.Tables.Add(dt);        }        private void btnImport_Click(object sender, EventArgs e)        {            InitializeWorkbook(@"xls\Book1.xls");            ConvertToDataTable();            dataGridView1.DataSource = dataSet1.Tables[0];        }

其它信息见:http://www.cnblogs.com/softidea/p/3182456.html

 楼主| 发表于 2013-8-22 13:31:58 | 显示全部楼层
谢谢啦
回复

使用道具 举报

 楼主| 发表于 2013-8-22 13:34:16 | 显示全部楼层

根据各位高手的指点,写了下面代码,实现读取excel的sheet表某一列数据
#region 读取excel中一个表数据到DataSet
        /**/
            /// <summary>
            /// 返回Excel数据源
            /// </summary>
            /// <param name="filename">文件路径</param>
            /// <param name="TSql">TSql</param>
            /// <returns>DataSet</returns>
        public static DataSet ExcelToDataSet(string filename, string strCmd)
       {
           //连接字符串,连接excel文件
           string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;data source=" + filename;
           //创建一个数据链接
           OleDbConnection myConn = new OleDbConnection(strCon);
           myConn.Open();
           OleDbDataAdapter myCommand = new OleDbDataAdapter(strCmd, myConn);
           DataSet ds = new DataSet();
           myCommand.Fill(ds);
           myConn.Close();
           return ds;
        }
#endregion
        #region 读取excel中某一数据表中某一列数据到listBox
        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "工作表|*.xls";
            ofd.ShowDialog();
            string filename = ofd.FileName;
            MessageBox.Show(filename);
            //只要改表名,就可以读取不同表数据
            //string TSql = "SELECT  * FROM [" + tableName + "]";
            string TSql = " SELECT * FROM [Sheet2$] ";
            DataSet ds = ExcelToDataSet(filename, TSql);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                listBox1.Items.Add(ds.Tables[0].Rows[13]);
            }
        }
        #endregion
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-27 21:28

© 2014-2021

快速回复 返回顶部 返回列表