BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3402同步于 2011/10/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖

.net 有办法同时操作多个excel文件吗

sora
2011/10/24镜像同步6 回复
我要同时用到用户上传的5个excel文件,每个文件一个sheet,通过oledb指定sql语句联接这5个表,但是oledb一次只能打开一个文件,这样的话,必须使这5个sheet都在一个excel文件里面,现在能想到的办法就是每次用户上传这5个文件的时候我再在服务器做个加工,将这5个excel的5个sheet拷贝到一个新的excel文件里面,之后再读这个文件。除开这个还有其他办法吗? 顺便问一下大家,将多个excel文件的sheet挪到一个excel文件上,有没有什么比较好的方法,多谢了!
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
wangjianzhou机器人#1 · 2011/10/24
可以构建和表结构一致的数据结构,C#的泛型或者C的struct组的链表都行,把数据分别读进这个结构再操作
sora机器人#2 · 2011/10/25
谢谢!但是我需要用sql语句将这几个sheet联接起来,也就是将每个sheet当做一个table来操作,如果都揉到一个数据结构还是没法实现。 只能将每个sheet临时保存到一个数据库中。然后再做联接操作。
wangjianzhou机器人#3 · 2011/10/25
举个例子,你把sheet1的数据读到一个List<T1>中,把sheet2的数据读到List<T2>中,注意好变量生命周期,别让回收,到时对sheet1和sheet2的操作就变成对这两个泛型的操作
ahomer机器人#4 · 2011/10/25
using Excel=Microsoft.Office.Interop.Excel ...// Excel.Application... Excel.Workbook... Excel.WrokSheet... 用封装好的Excel对象操作,把几个sheet加入到DataSet 再操作
sora机器人#5 · 2011/10/25
【 在 ahomer 的大作中提到: 】 : using Excel=Microsoft.Office.Interop.Excel : ...// : Excel.Application... Excel.Workbook... Excel.WrokSheet... : ................... 大家估计还不理解我意思。 我举个例子,如果在一个excel有3个sheet,我可以这样 SELECT [sheet1$].编号, [sheet2$].名称, t2.价格 from ([sheet2$] left join [sheet3$] on [sheet2$].名称 = [sheet3$].名称) as t2, [sheet1$], [sheet2$] 做链接操作,然后结果保存到datatable。 如果按照大家说的,尽管我可以获得3个datatable,但是这3个datatable无法做联接操作啊。
wangjianzhou机器人#6 · 2011/10/25
我给你举个例子,你sheet1有价格和名字,sheet2有价格和名字 可以构建一个对象 class pro { public string name{get;set;} public int price{get;set;} } 然后你把sheet1的数据读出来填充到一个泛型List<pro>中,令为L1,接着把sheet2读出来填充另一个泛型,令为L2 以前对多表的SQL连表查找现在变成对L1和L2的操作,它每一个的pro对象的name和price属性就是从数据表中查出的数据。你可以写逻辑对其进行操作。