V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hiths
V2EX  ›  编程

C# 关于 DataTable 的一个问题,求助大家~

  •  
  •   hiths · 2015-11-15 23:35:18 +08:00 · 2505 次点击
    这是一个创建于 3056 天前的主题,其中的信息可能已经有所发展或是发生改变。

    var cell = new {text = cellText, color = textColor, format = textFormat};

    我在 DataTable 的每个单元格里存上 cell 这样的对象,遍历 DataTable 的时候,为啥不能
    dr[coloumIndex].text 这样挨个读出 text 、 color 和 format 呢?是不是因为不管啥存到 DataTable 里,都被变成了 System.String 啊?

    其实就是我想写个东西读 excel 表格里的文字、文字格式和文字颜色,发现 C# 很方便就看了一点 C#就开始写了。如果只读文本的话,直接把读到的 text 以 string 形式存到 DataTable 再遍历就很方便,但是再包括颜色和文本格式就很麻烦。我能想到的办法就是写 3 个方法,一个读文本,一个读颜色,一个读格式,那这样就需要 3 个 DataTable,感觉有点不科学,求助大家一下,谢谢谢谢~

    4 条回复    2015-11-16 20:12:10 +08:00
    bin456789
        1
    bin456789  
       2015-11-16 00:03:15 +08:00
    dr[coloumIndex]是整行,你忘了指定哪个列
    将单元格转为 dynamic 就可用了,例如 ((dynamic)dr[0]["a"]).color
    还要注意添加列的时候要标明 object 类型, dt.Columns.Add("a",typeof(object));
    hiths
        2
    hiths  
    OP
       2015-11-16 09:59:43 +08:00
    @bin456789 先谢谢您了~我去试试看~
    hiths
        3
    hiths  
    OP
       2015-11-16 14:24:07 +08:00
    @bin456789 报告一下,搞定了~另外我没忘记指定列,遍历的时候我是这样 foreach (DataRow dr in dt.Rows) 写的,哈哈~C#真是啰嗦啊。各种类型。。
    bin456789
        4
    bin456789  
       2015-11-16 20:12:10 +08:00
    @hiths 嗯嗯,是我看错了。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5241 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 09:16 · PVG 17:16 · LAX 02:16 · JFK 05:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.