阅读一个大的 Excel 文档

2023-11-22

我想知道在 Excel 中读取单元格的最快方法是什么。 我有一个包含 50000 行的 Excel 文件,我想知道如何快速读取它。 我只需要阅读第一列,使用 oledb 连接大约需要 15 秒。 有更快的方法吗?

Thanks


以下是依赖于使用 Microsoft.Office.Interop.Excel 的方法。

请注意:我使用的 Excel 文件只有一列包含 50,000 个条目的数据。

1)用Excel打开文件,另存为csv,然后关闭Excel。

2)使用StreamReader快速读取数据。

3) 在回车换行符上拆分数据并将其添加到字符串列表中。

4)删除我创建的csv文件。

我使用 System.Diagnostics.StopWatch 来计时执行,该函数运行需要 1.5568 秒。

public static List<string> ExcelReader( string fileLocation )
{                       
    Microsoft.Office.Interop.Excel.Application excel = new Application();
    Microsoft.Office.Interop.Excel.Workbook workBook =
        excel.Workbooks.Open(fileLocation);
    workBook.SaveAs(
        fileLocation + ".csv",
        Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows
    );
    workBook.Close(true);
    excel.Quit();
    List<string> valueList = null;
    using (StreamReader sr = new StreamReader(fileLocation + ".csv")) {
        string content = sr.ReadToEnd();
        valueList = new List<string>(
            content.Split(
                new string[] {"\r\n"},
                StringSplitOptions.RemoveEmptyEntries
            )
        );
    }
    new FileInfo(fileLocation + ".csv").Delete();
    return valueList;
}

资源:

http://www.codeproject.com/Articles/5123/Opening-and-Navigating-Excel-with-C

如何用C#按回车符分割字符串?

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

阅读一个大的 Excel 文档 的相关文章

随机推荐

  • 简单的动态 SQL 查询语法

    这可能是一个简单的答案 但我已经盯着它看了太久了 我有以下查询 它将存储过程输入参数作为变量名称并计算该表中的记录 我想将动态语句 toStartStr 的结果检索到变量 toStart 中 tempTableName SProc inpu
  • 通过送纸器进行 WIA 扫描

    通过送纸器进行 WIA 扫描 这是我的设备属性 Document Handling Select 1 2 is for flatbed and 1 is for the feeder 这是我的项目 页面 属性 Horizontal Reso
  • Onclicklistener 无法正常工作..?

    我有一个按钮 我使用旋转动画将其旋转 45 度 并将其应用于烘烤消息的单击侦听器 当我单击按钮的上部 50 时 将显示吐司 但是当我点击按钮的下 50 时 没有任何显示 这里是动画代码
  • Spring:缺少 JPA 元模型

    我无法理解我的带有 JPA 存储库的简单 Spring MVC 项目出了什么问题 您能给个提示吗 Domain package com test app Entity Table name foo table public class Fo
  • Firebase 用户为已注册的用户返回空元数据

    我一直在使用 Firebase 对应用程序中的用户进行身份验证 FirebaseAuth getInstance getCurrentUser getMetadata 回报null当用户注册后返回应用程序时 当用户第一次注册但返回时它工作正
  • 为什么 SQL Server 默认 XACT_ABORT 为 OFF?可以全局设置为ON吗? [复制]

    这个问题在这里已经有答案了 我明白的目的设置XACT ABORT命令 当 SET XACT ABORT 为 ON 时 如果 Transact SQL 语句引发 运行时错误 整个事务被终止并回滚 当 SET XACT ABORT 为 OFF
  • 我无法使用 marionette 驱动程序和 selenium 3 在 FireFox 48 的下拉列表中选择选项

    我尝试了新的 geckodriver 并为 FF48 和 selenium 3 打开了 marionette 但测试无法在任何元素的下拉列表中选择选项 我的测试在 FF45 和所有其他浏览器中运行良好 只有木偶驱动程序没有选择下拉列表中的选
  • SIMD 最小磁极和最大磁极

    我想实现SIMD最小磁极和最大磁极函数 据我了解这些功能是 minmag a b a lt b a b maxmag a b a gt b a b 我想要这些浮点型和双精度型 我的目标硬件是 Haswell 我真正需要的是计算两者的代码 这
  • SQL Server 2008 安装错误:Microsoft Visual Studio 2008 的早期版本

    在安装 SQL Server 2008 开发人员版的过程中 我遇到了这个奇怪的错误 其中提到我应该安装 VSTS 2008 SP1 但实际上我安装了 VSTS 2008 SP1 任何想法有什么问题吗 这是我的屏幕快照 http i41 ti
  • 通过 Apache PDFBox 将 MS Office 文档添加到 PDF

    我正在使用 Apache PDFBox http pdfbox apache org 用于从任意数量的文件 包括图像和其他 PDF 创建 PDF 现在我需要将 MS Office 文档 Word Excel 和 Outlook MSG 添加
  • pathlib.py:在 Windows 上实例化“PosixPath”

    我克隆了thefuck源代码来自它的存储库 这是真正的项目名称 是的 我知道 尝试通过以下命令安装它以进行开发 pip install r requirements txt python setup py develop 效果很好 后来尝试
  • 在 Python 2 中,我可以将列表传递给百分比格式运算符吗?

    我有一个要使用格式字符串打印的内容列表 在 Python 3 风格中 使用 a string format arg arg arg 这很容易 我可以用参数替换 mylist like mylist 1 2 3 format mylist 我
  • 运行 apache 的 Docker 容器始终暴露端口 80

    我有一个运行 Apache 的 Docker 映像 并且我已经配置了 Apache 通过httpd conf 监听端口8080 Listen 8080 当我构建图像并运行它时 我能够通过端口成功连接到我的网站8080 所以此时一切似乎都很好
  • 如何使用CSS在电子邮件正文中发送网页

    我正在使用 html 表和 asp net 标签在 asp net 网页上创建报告 我必须在邮件正文中通过电子邮件发送完成的报告 我使用以下 c 代码完成了此操作 public bool SendEMail List
  • 例外:在 Linux 中“给定的最终块未正确填充”,但它在 Windows 中有效

    我的应用程序在 Windows 中运行 但在 Linux 中失败Given final block not properly padded例外 配置 JDK版本 1 6 Windows 版本 7 Linux CentOS 5 8 64位 我
  • PHP递归备份脚本

    我为我的网站编写了一个基本的内容管理系统 包括一个管理面板 我了解基本的文件 IO 以及通过 PHP 进行复制 但我尝试从脚本调用备份脚本失败了 我尝试这样做 authentication other functions for scand
  • libgit2 支持 SSH 传输协议吗?

    是否可以使用 ssh keys 通过 ssh 克隆存储库 libgit2 中尚未实现 SSH 传输 检查第1103期罢工 gt 第 1558 期为了进步 Update 拉取请求1508 已合并2013 年 5 月 16 日 从那时起 它也得
  • Modernizr.load 已弃用。 Yepnope.js 已弃用。怎么办?

    在 Modernizr v3 之前 我使用的是 yepnope js Modernizr load 和 yepnope js 均已被弃用 现在我们如何有条件地调用样式表或 JavaScript 文件 使用 Modernizr v2 5 3
  • 什么是方法重载? [复制]

    这个问题在这里已经有答案了 我发现一些资源说方法重载是一种语言根据上下文使用相同方法并产生不同结果的能力 不知何故 当我阅读其他定义时 我觉得这不是完整的定义 方法重载还有更多内容吗 这只是一种非常笼统的描述方式 方法重载允许您使用单个方法
  • 阅读一个大的 Excel 文档

    我想知道在 Excel 中读取单元格的最快方法是什么 我有一个包含 50000 行的 Excel 文件 我想知道如何快速读取它 我只需要阅读第一列 使用 oledb 连接大约需要 15 秒 有更快的方法吗 Thanks 以下是依赖于使用 M