关于DataTable.Rows.Add操作(C#)

blueicexx 2010-03-09 06:22:56

操作情况是这样:

有一个Excel文件,我读出来后在程序中存放于DataTable A, 另外,从外部传进来一个数据源, Table B

A与B字段名及个数都一样. 循环表B行数据,将B表的行转换为数组Add到A表中.采用A.Rows.Add(B.Rows[0].ToArray())方法.

当Excel文件没有设置任何公式及只读等保护时,程序正常. B的数据正常添加至A.

但以下几种情况及问题:

1.当Excel设置工作表保护后,执行A.Rows.Add()时,提示 该数据列不允许更新.
2.当Excel没设置工作表保护,但在Excel中设置一些公式后,执行A.Rows.Add(B.Rows[0].ToArray())时,debug程序没有提示异常.但数据并没有添加至A.

疑问:设置工作表保护后为只读后,用OAD读取Excel数据时,把相应的只读保护属性也赋给了表A ?

当设置了公式后,为什么同样不能添加数据?

我是不是需要设置列及行的格式? 怎么设置?

请高手帮忙解决该问题
...全文
3158 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueicexx 2010-03-10
  • 打赏
  • 举报
回复
引用 4 楼 zhangkewen1234 的回复:
结构一样,合并表直接用DataTable.Merge方法就行了


用Merge 跟 Add 效果一样,程序不报错,但行数据并没有添加进去.
happy664618843 2010-03-10
  • 打赏
  • 举报
回复
帮顶 不懂
blueicexx 2010-03-10
  • 打赏
  • 举报
回复
现在的问题是,我没有数据库操作,就是纯Excel操作.

从Excel中读数据代码如下:
 DataSet tempDt = new DataSet();
OleDbDataAdapter oDA = new OleDbDataAdapter(string.Format("Select * from [{0}$]", Property.TableName), conn);
OleDbCommandBuilder comm = new OleDbCommandBuilder(oDA);
comm.QuotePrefix = "[";
comm.QuoteSuffix = "]";
conn.Open();
int fillDs = oDA.Fill(tempDt, Property.TableName);


赋值代码如下:
foreach (DataRow dr in dataTable.Rows)
{
tempDt.Tables[Property.TableName].Rows.Add(dr.ItemArray);
}


更新数据代码如下:
oDA.Update(tempDt, Property.TableName);


以上代码是Excel为普能模式下均正常.但当Excel设置了一些保护或者公式后即出现问题.
zhangkewen1234 2010-03-09
  • 打赏
  • 举报
回复
结构一样,合并表直接用DataTable.Merge方法就行了
wonsoft 2010-03-09
  • 打赏
  • 举报
回复
你的问题是不是可以这样解决:用insert (SQL)来实现呢?!直接访问数据库,而不直接操作datatable这个读出来的内存数据,个人认为insert比直接操作datatable好得多。
丰云 2010-03-09
  • 打赏
  • 举报
回复
有一个Excel文件,我读出来后在程序中存放于DataTable A

这个过程是怎么做的?
blueicexx 2010-03-09
  • 打赏
  • 举报
回复
有个地方说错了
A.Rows.Add(B.Rows[0].ToArray())
应该是
A.Rows.Add(B.Rows[0].ItemArray)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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