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

删除excel表中指定的一行
//读取excel表中一个值,然后在dbf表中查询,如果在dbf表中不存在这个值,就把excel表中这一行删除
for (int excelRow = excel开始行; excelRow < excel总行; ++excelRow)
{
string excelData = myExcelDataSet.Tables["[Sheet1$]"].Rows[excelRow][Excel列].ToString();//读取excel表一个值
//在dbf表中核对
OleDbConnection conn = new OleDbConnection(@"Provider=vfpoledb;Data Source=" + Text.ToString() + ";Extended Properties=dBASW IV;User ID=;Password=");
conn.Open();
System.Data.OleDb.OleDbCommand cmd = new OleDbCommand("select * from '" + Text.ToString() + "' where " + DBFDN1 + "='" + excelData + "'", conn);
OleDbDataReader dr = cmd.ExecuteReader();

if (dr.HasRows == false)
{
从excel表中excelRow这一行数据删除
}
}


如何删除,请大侠们详细指点,谢谢!

------解决方案--------------------
http://bbs.csdn.net/topics/300258090
参考下。
貌似不能用sql删除
------解决方案--------------------
如果你不介意格式的话,那么可以把数据装到datatable中,然后把dt save回原来的文件

如果你介意格式的话,
1采用Excel.Application提供程序读取,然后,清除对应行
2采用NPOI


建议采用NPOI

代码请自行查找
------解决方案--------------------
直接给那行赋值为空不是更简单?代码最后一种可以指定行数
------解决方案--------------------
http://www.cnblogs.com/atao/category/209358.html

有你要的内容
------解决方案--------------------
创建Excel文件.Cells[行 + 2, 列 + 1] = "";
------解决方案--------------------
不知道你是WINFORM程序还是WEB程序

WINFORM程序
如:
sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[10, 10]).Delete(-4159);

WEB程序:
xlSheet.Rows(11).Delete(-4162);

析:
类似-4159 和 -4162 的值可以在EXCEL录制宏得到