c#中如何对已经打开的excel写入数据。

liejiuchai6787 2017-07-26 10:42:49
就是想一点一点将数据通过判断语句写入到已经打开的excel表中。有没有简单的写入方法。
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=false; Data Source=E:\work\CreatExcel\CreatExcel\bin\Debug\测试表格1.xlsx; Extended Properties=Excel 12.0 ;";

OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
System.Data.DataTable dt = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
dt = new System.Data.DataTable();
myCommand.Fill(dt); OleDbCommand cmd = new OleDbCommand();
string sheetName = "是否执行完毕";
string sqlDelete = @"DROP TABLE " + sheetName + ";";
cmd = new OleDbCommand(sqlDelete, conn);
cmd.CommandText = @"INSERT INTO " + sheetName + " VALUES (?????不知道这里是什么);";

cmd.ExecuteNonQuery(); [/quote][/quote]


我试着用这种方法,但是不知道该如何将数据写入指定位置。
...全文
1214 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
加油馒头 2017-08-01
  • 打赏
  • 举报
回复
用NPOI 插件 读写,效率高,不会丢失内容
ilikeff8 2017-07-29
  • 打赏
  • 举报
回复
            string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=false; Data Source=D:\Book1.xlsx; Extended Properties=Excel 12.0 ;";

            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            OleDbDataAdapter myCommand = null;
            System.Data.DataTable dt = null;
            strExcel = "select * from [sheet1$]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            dt = new System.Data.DataTable();
            myCommand.Fill(dt); OleDbCommand cmd = new OleDbCommand();
            cmd = new OleDbCommand(@"INSERT INTO [sheet1$] (是否执行完毕) VALUES ('是')", conn);
            cmd.ExecuteNonQuery();
ilikeff8 2017-07-29
  • 打赏
  • 举报
回复
没什么问题
liejiuchai6787 2017-07-29
  • 打赏
  • 举报
回复


都试过了,总是写不进去,各种方法各种报错,我就是想往[是否执行完毕]列里面填数据。大神能给点代码参考下吗。谢谢了。
@duanzi_peng
liejiuchai6787 2017-07-29
  • 打赏
  • 举报
回复
谢谢@ilikeff8,我刚才仔细看了我的excel,原来能写进去,但是它插入的地方的那一列的起点是前面列的最后为起点的,我想问下怎么能够写到前面行去,就是从第二行开始。。谢谢了
exception92 2017-07-28
  • 打赏
  • 举报
回复
引用 11 楼 liejiuchai6787 的回复:
还是解决不了。改了之后提示 "找不到可安装的 ISAM" .@duanzi_peng 找了很多方法,都不能用。
2003 版以下的excel,用Excel 8.0 ,2007或者2010 用12.0,再设置IMEX=0试试。
liejiuchai6787 2017-07-27
  • 打赏
  • 举报
回复
还是解决不了。改了之后提示 "找不到可安装的 ISAM" .@duanzi_peng 找了很多方法,都不能用。
liejiuchai6787 2017-07-26
  • 打赏
  • 举报
回复
顶一下,up
liejiuchai6787 2017-07-26
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
有多少列 就给多少个数据,类型要一致。 string sheetName = "是否执行完毕"; -》 string sheetName = "[是否执行完毕]";
我只是想在其中某列写东西进去,我想知道这种方法写到excel中能够实时看见吗。不是太懂sql语句,能给些代码吗@duanzi_peng
by_封爱 版主 2017-07-26
  • 打赏
  • 举报
回复
引用
已经打开的excel表中
独占的东西 你能打开吗???
exception92 2017-07-26
  • 打赏
  • 举报
回复
string sqlDelete = @"DROP TABLE " + sheetName + ";"; cmd = new OleDbCommand(sqlDelete, conn); cmd.CommandText = @"INSERT INTO " + sheetName -》 不应该drop了一下,再insert吧。
exception92 2017-07-26
  • 打赏
  • 举报
回复
有多少列 就给多少个数据,类型要一致。 string sheetName = "是否执行完毕"; -》 string sheetName = "[是否执行完毕]";
xdashewan 2017-07-26
  • 打赏
  • 举报
回复
参考http://blog.csdn.net/hlzyly/article/details/5710644
exception92 2017-07-26
  • 打赏
  • 举报
回复
注意这里, Extended Properties=Excel 12.0 ;HDR=YES;IMEX=2;
exception92 2017-07-26
  • 打赏
  • 举报
回复
引用 7 楼 duanzi_peng 的回复:
[quote=引用 5 楼 liejiuchai6787 的回复:] [quote=引用 2 楼 duanzi_peng 的回复:] 有多少列 就给多少个数据,类型要一致。 string sheetName = "是否执行完毕"; -》 string sheetName = "[是否执行完毕]";
我只是想在其中某列写东西进去,我想知道这种方法写到excel中能够实时看见吗。不是太懂sql语句,能给些代码吗@duanzi_peng[/quote] 可以实时看到。 某列的话 sheet$ 之后跟 列名称就行了。[/quote] 比如:
cmd.CommandText = @"INSERT INTO [Sheet1$](Age) VALUES (100);";
几乎和sqlserver的语法一致。
吉普赛的歌 2017-07-26
  • 打赏
  • 举报
回复
不好弄。别的进程已经打开了, 你的进程要读勉强可以, 要写是万万不能
exception92 2017-07-26
  • 打赏
  • 举报
回复
引用 5 楼 liejiuchai6787 的回复:
[quote=引用 2 楼 duanzi_peng 的回复:] 有多少列 就给多少个数据,类型要一致。 string sheetName = "是否执行完毕"; -》 string sheetName = "[是否执行完毕]";
我只是想在其中某列写东西进去,我想知道这种方法写到excel中能够实时看见吗。不是太懂sql语句,能给些代码吗@duanzi_peng[/quote] 可以实时看到。 某列的话 sheet$ 之后跟 列名称就行了。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧