看了很纠结 UPDATE sheet1$ SET NAME = NULL, DeptName= NULL WHERE DeptId !=‘写一个不存在的值 这样应该能全部情况了吧’ 下面的更纠结 1、中转删除法(物理删除) 通过MSSQL的一个语法将EXCEL数据导入到一个MSSQL中一个表里,然后直接操作MSSQL删除表中的某些你要删除的行。再将原EXCEL文件删除或改名,然后从MSSQL的那个表中将数据导出为原EXCEL文件名。 插入到mysql>delete>在导出 我这样写的 FileInfo feinfo = new FileInfo("e:/USBNotPermission.xls"); feinfo.CopyTo("d:/USBNotPermission.xls", true); E盘是一个空的excel只有一列 那就是列名 username hostname domainname 每次替换d盘的excle 这样每次运行前先提花在插入就不要删除了 呵呵 原来Excel不支持删除,DELETE FROM sheet1$ 报错“该 ISAM 不支持在链接表中删除数据”。因为Excel工作表中的行与真正的关系型数据库的行是有些不一样的,所以如果通过编程来访问Excel工作表的数据,那么检索,插入,更新应该是没有问题的,但要是删除的话,就会有一些限制。删除 Excel 数据时,受到的限制要比从关系数据源中删除数据时更多。在关系数据库中,“行”除了表示一条“记录”外没有其他意义;但在 Excel 工作表中却不同。可以删除字段(单元格)中的值,但不能: 1、 一次删除一整条记录,否则将出现以下错误信息: Deleting data in a linked table is not supported by this ISAM. 只能通过分别清空各个字段的内容来删除一条记录。 2、 删除包含 Excel 公式的单元格中的值,否则将出现以下错误信息: Operation is not allowed in this context. 3、 虽然电子表格中已被删除的数据原来所在的行现在是空行,但无法将其删除,而且记录集将继续显示对应于这些空行的空记录。 针对这个问题,通常简单的做法就是清空字段的值,类似这样的写法: UPDATE sheet1$ SET NAME = NULL, DeptName= NULL WHERE DeptId = 1; 当然,你要知道的是,这一行并没有真正删除掉,所以通常在select的时候要进行一定的筛选,例如:SELECT * FROM sheet1$ WHERE DeptId IS NOT NULL; 备注: 1、中转删除法(物理删除) 通过MSSQL的一个语法将EXCEL数据导入到一个MSSQL中一个表里,然后直接操作MSSQL删除表中的某些你要删除的行。再将原EXCEL文件删除或改名,然后从MSSQL的那个表中将数据导出为原EXCEL文件名。
还是靠自己管用
运行脚本前先删除文件再创建文件然后给了列名再循环插入就ok了
不删除了 不删除了 人都死了 这个问题……其实我也懒 没办法各位大哥都不帮我
小弟只能自己用笨方法解决了 哎 坑爹啊
-->
string sql2 = "delete from [Sheet1$] where user_name=4 ";
fileinfo这个类
用了一下ok 结了吧
在E盘存了空的excel 只有列 然后
FileInfo feinfo = new FileInfo("e:/USBNotPermission.xls");
feinfo.CopyTo("d:/USBNotPermission.xls", true);
每次替换 那连接数据库的excle就是空的 这样不用删除了
可是为什么删除不行了
加不加table关键字都一样
正确的写法应该是:delete from [Sheet1$]
如果还删不掉,说明有引用,公式?或者权限。
可以把错误发出来看一看。
string sql2 = "delete from [Sheet1$]";
OdbcCommand cmd2 = new OdbcCommand(sql2, con);
result = cmd2.ExecuteNonQuery(); if (result > 0)
Console.WriteLine("delete success");
else
Console.WriteLine("delete file");ERROR [HY000] [Microsoft][ODBC Excel 驱动程序] 该 ISAM 不支持在链接表中删除数据。
UPDATE sheet1$ SET NAME = NULL, DeptName= NULL WHERE DeptId !=‘写一个不存在的值 这样应该能全部情况了吧’
下面的更纠结
1、中转删除法(物理删除)
通过MSSQL的一个语法将EXCEL数据导入到一个MSSQL中一个表里,然后直接操作MSSQL删除表中的某些你要删除的行。再将原EXCEL文件删除或改名,然后从MSSQL的那个表中将数据导出为原EXCEL文件名。
插入到mysql>delete>在导出
我这样写的
FileInfo feinfo = new FileInfo("e:/USBNotPermission.xls");
feinfo.CopyTo("d:/USBNotPermission.xls", true);
E盘是一个空的excel只有一列 那就是列名 username hostname domainname
每次替换d盘的excle 这样每次运行前先提花在插入就不要删除了 呵呵
原来Excel不支持删除,DELETE FROM sheet1$ 报错“该 ISAM 不支持在链接表中删除数据”。因为Excel工作表中的行与真正的关系型数据库的行是有些不一样的,所以如果通过编程来访问Excel工作表的数据,那么检索,插入,更新应该是没有问题的,但要是删除的话,就会有一些限制。删除 Excel 数据时,受到的限制要比从关系数据源中删除数据时更多。在关系数据库中,“行”除了表示一条“记录”外没有其他意义;但在 Excel 工作表中却不同。可以删除字段(单元格)中的值,但不能:
1、 一次删除一整条记录,否则将出现以下错误信息:
Deleting data in a linked table is not supported by this ISAM.
只能通过分别清空各个字段的内容来删除一条记录。
2、 删除包含 Excel 公式的单元格中的值,否则将出现以下错误信息:
Operation is not allowed in this context.
3、 虽然电子表格中已被删除的数据原来所在的行现在是空行,但无法将其删除,而且记录集将继续显示对应于这些空行的空记录。
针对这个问题,通常简单的做法就是清空字段的值,类似这样的写法:
UPDATE sheet1$ SET NAME = NULL, DeptName= NULL WHERE DeptId = 1;
当然,你要知道的是,这一行并没有真正删除掉,所以通常在select的时候要进行一定的筛选,例如:SELECT * FROM sheet1$ WHERE DeptId IS NOT NULL;
备注:
1、中转删除法(物理删除)
通过MSSQL的一个语法将EXCEL数据导入到一个MSSQL中一个表里,然后直接操作MSSQL删除表中的某些你要删除的行。再将原EXCEL文件删除或改名,然后从MSSQL的那个表中将数据导出为原EXCEL文件名。