高分求大数据量的EXCEL读写C#方法!

ggyyb 2005-10-17 03:08:38
有一个EXCEL 有2000行 每行20列! 要读到页面上显示出来! 求高效方法!
时间应控制在5min左右! 当然越快越好!
谢谢各位
...全文
693 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
warren1999 2006-04-28
  • 打赏
  • 举报
回复
mark
sky592 2006-04-05
  • 打赏
  • 举报
回复
mark
cnnbchens 2005-10-24
  • 打赏
  • 举报
回复
我写错了!!
可以写了,创建新的excel还可以
我怎么去读excel的数据啊,不能定位activate sheet啊

sheets.call("get_Item",args)
说这句执行目标错误???
纳闷............
cnnbchens 2005-10-24
  • 打赏
  • 举报
回复
tiaoci(我挑刺,我快乐)

高手,不过我有些不明白
var.call(string,params object[] args)
第二个参数,我试了好多遍都不行
object[] args = new object[15];
args[0]=str[@"f:\2005.xls"];
for(int i=1;i<15;i++)
{
args[i] = System.Reflection.Missing.Value;
}

比如 Var book = books.CallVar("Add",args))
执行会出错

也就是只有写数据,没有读,没有保存
请指点!谢谢
wwqna 2005-10-18
  • 打赏
  • 举报
回复
作为一个数据库打开是最快的

SqlConnection conn = new SqlConnection("Data Source=(local);database=Northwind;user id =sa;pwd=york");
string strSql = @"select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=e:\book1.xls',a$)";
SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
customerGrid.DataSource = ds.Tables[0];
长江支流 2005-10-18
  • 打赏
  • 举报
回复
***GoldPrinter.ExcelExpert(MIS金质打印通之Excel专版)***
1、如何将各版本Excel(COM类型库) 转换生成.Net公共语言运行库程序集如Interop.Excel.dll
2、如何引用Excel库或已生成的程序集
3、创建Excel实例
4、打开Excel工作薄工作表和模板
5、增、删、改、插入、定位、重命名工作表
6、获取活动工作表指定范围单元格及带区
7、读、写单元格内容
8、向带区中写内容

9、单元格合并
10、字体及颜色
11、边框及网格线
12、保存、另存
13、打印、预览
14、彻底关闭Excel进程
15、综合应用,通打天下报表
...

需要的朋友:
Email:flygoldfish@163.com QQ:150439795
更多源码:www.webmis.com.cn
8u9 2005-10-18
  • 打赏
  • 举报
回复
vba,没有用过,能多透露一点吗。
tiaoci 2005-10-18
  • 打赏
  • 举报
回复
5min? 5 秒就够了!
http://spaces.msn.com/members/tiaoci/
xiaomatian 2005-10-18
  • 打赏
  • 举报
回复
把EXCEL作为一个数据库来操作应该还可以的吧?
accpzj 2005-10-17
  • 打赏
  • 举报
回复
学习
长江支流 2005-10-17
  • 打赏
  • 举报
回复
我在做MIS金质打印通时的Excel功能模板时,很多朋友都反应非常方便。

因为 给网通做项目要导数据,随便找个表就有几十万的数据,很多同事说把它数据打开后分页放到DataTable分开导出,我觉得这样不好,一是内存占用量大,二是每次分页打开数据都会占有一些时间。
我的解决办法是让Excel自动处理,操作Excel后用C#调用VBA打开数据库用快表,结果30万的数据只花15秒,而且可以指定每个sheet的装载多少数据。

chinasdp 2005-10-17
  • 打赏
  • 举报
回复
private void button1_Click(object sender, System.EventArgs e)
{
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
OleDbDataAdapter ada = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openFileDialog1.FileName + ";Extended Properties=Excel 8.0;");
DataTable dt = new DataTable();
try
{
ada.Fill(dt);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
dataGrid1.DataSource = dt;
}
}
测试2000行38列用1.5秒。
自由程序员 2005-10-17
  • 打赏
  • 举报
回复
支持一下

110,536

社区成员

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

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

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