日期:2014-05-17  浏览次数:20582 次

怎么直接把dataset的前两条数据删除,然后把第三条数据当作列名
因为这个dataset是从excel直接读出来的,由于excel的格式问题,现在想把第一行和第二行删除,把第三行的数据当作列名,请问各位大侠怎么实现啊?

------解决方案--------------------
引用:
因为这个dataset是从excel直接读出来的,由于excel的格式问题,现在想把第一行和第二行删除,把第三行的数据当作列名,请问各位大侠怎么实现啊?



 DataTable dt = ds.Tables[0];
            DataRow drInfo=dt.Rows[2];
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                dt.Columns[i].ColumnName = drInfo[i].ToString();
            }
            dt.Rows.RemoveAt(0);
            dt.Rows.RemoveAt(0);
            dt.Rows.RemoveAt(0);

------解决方案--------------------
呵呵,回去找本ADO.NET书来看,直接翻到DataSet对象章节,你就会发现,DataSet其实是模拟一个SQL数据库,只不过它是在内存里,不能永久保存罢了

而且它作为一个对象,有很多属性和方法可以调用,其实你的这种需求,不是难事,前提是你对DataSet对象有足够的了解

不然,在这里想要回答你的上面问题,还真是不懂怎么解答,比如你说的删除前两行这种操作,简直和没问差不多,因为DataSet这个内存中的数据库,不可能没有删除方法的

而你说的第三行作为列名,同理,不是难事,你就遍历一下对象里的表集合的第三行,其实这个第三行也是一个行对象,同样它也有N多属性和方法,足够你玩转它们

而容器对象本身,肯定可以动态修改列标题的,它就像内存里的一个数据库,你现在想修改这个数据库里的一个表的列标题,这肯定没问题

我这里不上代码了,讲思路容易,代码很无语,希望楼下的朋友能给你代码
------解决方案--------------------

    DataTable dt = new DataTable();

            Workbook hssfworkbook;
            
            hssfworkbook = new HSSFWorkbook(fileStream);
            
            Sheet sheet = hssfworkbook.GetSheetAt(0);