读书人

如何直接把dataset的前两条数据删除

发布时间: 2013-08-23 15:57:36 作者: rapoo

怎么直接把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);


System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

Row headerRow = sheet.GetRow(2);//选择第三行
int cellCount = headerRow.LastCellNum;

for (int j = 0; j < cellCount; j++)
{
Cell cell = headerRow.GetCell(j);
dt.Columns.Add(cell.ToString());
}

for (int i = (sheet.FirstRowNum + 3); i <= sheet.LastRowNum; i++)//从第四行读取数据
{
Row row = sheet.GetRow(i);
DataRow dataRow = dt.NewRow();

for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString().Trim();//使用Trim方法去除空格
//dataRow[j] = row.GetCell(j).ToString();
}

dt.Rows.Add(dataRow);
}
return dt;

读书人网 >asp.net

热点推荐