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

2024-04-22

我正在尝试使用 OLEDB (没有自动化)写入 Excel 文件。 我有大约 500 行数据,这些数据是从其他应用程序获取的,然后使用“INSERT INTO..”查询将其一一写入 Excel 文件。 我确信从其他应用程序读取数据没有延迟。我查了一下。 大约 3 分钟内写入 500 行 Excel 文件所需的总时间。 这太多了。这肯定是由于文件写操作造成的。

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

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


如果可以 COM 到 excel,则可以通过 COM 直接从 excel 进行查询,或者创建一个数据数组并将其直接放入等于数组大小的范围中。尽管 excel 不太适合小型 COM 调用,但它可以很好地处理少数大型 COM 调用:)

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 中的示例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 写入 Excel 文件的最佳和最快方法是什么? 的相关文章

随机推荐

  • SQL Server返回代码-6,是什么意思?

    我有一个没有任何问题的存储过程 即返回代码为 0 在某些情况下 我会引发用户定义的错误 gt 50000 在这些情况下 回报是 6 我只是好奇 6 是什么意思 我没有在程序中设置返回码 因此这个数字是SQL Server 系统 生成的 我发
  • build.xml 将日期和时间设置为文件名

    我想设置带有日期和时间的文件名 因此我想创建名为的文件behat 20140913 195915 html但是下面的示例将名称设置为behat yyyymmdd hhiiss html 有人知道问题的解决办法吗 我跟着这个例子 http a
  • 带功能区的 Spring Cloud 不会忽略关闭的服务器

    我正在遵循有关尤里卡客户端负载平衡的 Spring 指南 https spring io guides gs client side load balancing https spring io guides gs client side
  • 如何从ajax加载数据到zabuto日历插件?

    作为标题 我尝试将数据从 ajax 加载到 zabuto 日历 但似乎不起作用 参考 zabuto 日历http zabuto com dev calendar examples show data html 我想在单击上个月或下个月的导航
  • 日历应该用表格来表示吗?为什么 Google 日历只使用表格作为列?

    这不是另一个一般的 一般布局的表格与 div 元素 类型的问题 例如 为什么不使用表格来布局 https stackoverflow com questions 83073 why not use tables for layout in
  • Rails:如何增加模型选定实例的整数字段?

    Buyer模型有两个字段 名称 字符串 位置 整数 我想增加position在所有买家中position gt N 最简单的方法是什么 是否可以仅使用一个查询来实现这一目标 你可以使用 Buyer update all position p
  • FireStore 创建一个文档(如果不存在)

    我想更新这样的文档 db collection users doc user id update foo bar 但是 如果文档 user id 不存在 上面的代码将抛出错误 因此 如果学生不存在 如何告诉 Firestore 创建学生 换
  • 当 JUnit 5 外部测试用例失败时,不要启动嵌套测试用例

    我有以下测试类 import org junit jupiter api Nested import org junit jupiter api Test import org junit jupiter api TestInstance
  • Rails 5.1 路由:动态:动作参数

    Rails 5 0 0 beta4 在包含动态 action 和 controller 段的路由上引入了弃用警告 DEPRECATION WARNING Using a dynamic action segment in a route i
  • 如何突出显示Recycler View中选定的Item?

    我有一个回收站视图 其中包含从内部存储加载的图像 我想在单击时突出显示所选项目 我尝试了很多东西但没有成功 实际上 我需要的是 当我单击回收器视图中的任何项目时 该项目必须进入我的ArrayList 并且它也应该突出显示 并且当我单击或取消
  • Sklearn 随机森林回归器的错误

    当尝试使用 y 数据拟合随机森林回归器模型时 如下所示 0 00000000e 00 1 36094276e 02 4 46608221e 03 8 72660888e 03 1 31375786e 04 1 73580193e 04 2
  • 如何从 iPhone 中删除 coredata

    您知道当您更改实体结构时如何重置 iPhone 模拟器上的核心数据存储吗 当我创建的核心数据存储的新版本与我上次在 iPhone 上运行的版本不同时 是否需要执行类似的过程 如果可以的话 请问如何 Thanks 只是为了方便起见 除非您编写
  • CMS 在 .NET 中使用不在本地受信任证书存储中的证书链进行签名

    我有存储在网络上的 X509 证书 我可以从远程 Windows 证书存储中读取链 我需要签署一些数据并将链包含到签名中 以便以后可以对其进行验证 问题是我找不到将证书链放入 CsmSigner 的方法 我读到它从构造函数参数中获取证书并尝
  • PostgreSQL:“按分钟”运行查询的行数

    我需要每分钟查询截至该分钟的总行数 到目前为止我所能达到的最好成绩并不能解决问题 它返回每分钟的计数 而不是每分钟的总计数 SELECT COUNT id AS count EXTRACT hour from when AS hour EX
  • Python BigQuery 超时确实很奇怪

    我正在构建一项将数据流式传输到 bigquery 的服务 如果我删除需要 4 5 分钟加载的部分 我正在预缓存一些映射 则以下代码可以完美运行 from googleapiclient import discovery from oauth
  • Ruby 2.3 - 向 net:http 请求添加超时错误和通知

    我有一个工作系统可以产生错误并将其发送给活动管理员使用 例如 在活动管理中 对于我们 CMS 的特定页面 该页面可能会执行 url must be accessible http www exmaple com field url part
  • 使用 stack 安装 shuffle 库时出错

    Using stack 1 2 0 and LTS 7 0我在安装时遇到以下错误shuffle https hackage haskell org package shuffle 图书馆 cabal get shuffle cd shuff
  • 滚动时删除#anchor-id

    我正在使用这个jqueryhttp css tricks com examples SmoothPageScroll http css tricks com examples SmoothPageScroll 创建平滑的页面滚动 但是每次我
  • 加入同一存储库旧版本的历史记录

    我有一个包含这段历史的存储库 A B C D 然后 这个存储库被 拆分 基本上 使用 git subtrees 创建了另一个存储库 其历史记录从 D 开始 现在 我有另一个具有这段历史的存储库 The same D as the other
  • 使用 C# 写入 Excel 文件的最佳和最快方法是什么?

    我正在尝试使用 OLEDB 没有自动化 写入 Excel 文件 我有大约 500 行数据 这些数据是从其他应用程序获取的 然后使用 INSERT INTO 查询将其一一写入 Excel 文件 我确信从其他应用程序读取数据没有延迟 我查了一下