首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#写入Excel文件的最好和最快的方法是什么?

使用C#写入Excel文件的最好和最快的方法是什么?
EN

Stack Overflow用户
提问于 2009-05-15 22:24:55
回答 12查看 13.1K关注 0票数 6

我正在尝试使用OLEDB (没有自动化)写入excel文件。我有大约500行数据,这些数据是我从其他应用程序中获得的,然后使用“INSERT into ..”逐个写入Excel文件。查询。我确信从其他应用程序读取数据时不会有任何延迟。我查过了。在大约3分钟内写入500行excel文件所用的总时间。这太过分了。这绝对是因为文件写入操作。

最快的方法是什么?我应该使用其他的写作技巧吗?我应该尝试自动化的技术吗?

http://support.microsoft.com/kb/306023此链接显示了许多技术,但不确定要使用哪种技术。

EN

回答 12

Stack Overflow用户

发布于 2009-05-15 22:47:57

如果可以进入excel,则可以通过COM直接从excel查询,或者创建一个数据数组并将其直接放入与数组大小相等的范围内。尽管excel对于小的COM调用不是很好,但它在几个大的COM调用中工作得相当好:)

代码语言:javascript
复制
DataSet ds = new DataSet();
          da.Fill(ds);
          int width = ds.Tables[0].Columns.Count;
          int height = ds.Tables[0].Rows.Count;
          object[,] retList = new object[height, width];
          for (int i = 0; i < height; i++)
          {
            DataRow r = ds.Tables[0].Rows[i];
            for (int j = 0; j < width; j++)
              retList[i, j] = r.ItemArray[j];
          }
          Excel.Range range = mWs.get_Range(destination, mWs.Cells[destination.Row + height - 1, destination.Column + width - 1]);
          range.set_Value(Missing.Value, retList);
          System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
          range = null;

这是一个在一个COM调用中获取数据并将其作为数组插入到excel中的示例。

票数 7
EN

Stack Overflow用户

发布于 2009-05-15 22:36:23

XML已经提供了读/写数据所需的一切。

我有时会使用SpreadsheetML格式,它对我来说效果很好。使用它,您可以写出一个xml格式的文档,并使用.xls扩展名对其进行命名。大多数excel功能都是可用的。微软的参考文档是here。谷歌上有各种语言的教程,比如RailsPHPExcel Hacks这本书也谈到了这一点。

票数 3
EN

Stack Overflow用户

发布于 2009-05-15 22:37:25

如果只是数据,CSV文件导入可以正常工作。在代码中创建文件,并使用自动化使Excel导入该文件。

更新:写完这篇文章后,我喜欢上了我不知道的@MicTech's suggestion

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/871115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档