往Excel中快速写入数据的又一种方法

往Excel写入数据的方法比较多,但实际应用场景及对性能的要求决定了需要对方法有所取舍。一些具体情形和方法可以参见https://blog.csdn.net/u013109267/article/details/52651647?locationNum=2&fps=1

但受到.Net framework及Excel版本的影响,一些比较旧的方法不再有效。比如上面网页中快速写入的关键方法get_Range和set_Value在新的VSTO环境中就受到影响。但原帖中的思路跟方法是可以借鉴的:

//将Table数据转换成Array
private object[,] Table2Array(System.Data.DataTable myTable)
{
    int rowCount = myTable.Rows.Count;
    int colCount = myTable.Columns.Count;
    object[,] myArray = new object[rowCount, colCount];

    for (int i = 0; i < rowCount; i++)
    {
        var row = myTable.Rows[i];

        for(int j = 0; j < colCount; j++)
        {
            myArray[i][j] = row[j];
        }

    return myArray;
}

//数据快速写入到Excel
private void FastLoad(string sheetName, System.Data.DataTable myTable, int startX, int startY)
{
    int rowCount = myTable.Rows.Count;
    int colCount = myTable.Columns.Count;
    object[,] myArray = Table2Array(myTable);

    //输出列名
    for(int i = 0; i < colCount; i++)
    {
        Worksheets[sheetName].Cells[startX, startY + i] = myTable.Columns[i].ColumnName;
    }

    //数据输出到Excel
    Range range = Worksheets[sheetName].Range(Worksheets[sheetName].Cells[startX + 1, startY], Worksheets[sheetName].Cells[startX + rowCount, startY + colCount - 1]);
    range.Value2 = myArray;
}

原文地址:https://www.cnblogs.com/RobZH/p/10014563.html

时间: 2024-08-29 05:57:22

往Excel中快速写入数据的又一种方法的相关文章

linux中快速清空文件内容的几种方法

这篇文章主要介绍了linux中快速清空文件内容的几种方法,需要的朋友可以参考下 $ : > filename $ > filename $ echo "" > filename $ echo > filename $ cat /dev/null > filename 原文地址:https://www.cnblogs.com/lxwphp/p/9565572.html

Mac OS X 中快速访问系统根目录的四种方法

转载地址:http://www.macx.cn/thread-2080254-1-1.html 就像其他Unix系统一样,Mac OS X的根目录也是/,Finder中的根目录就是硬盘目录,也就是MacintoshHD.新版本的OS X系统开始隐藏根目录,因为大多数用户不需要访问.下面为大家介绍四种快速访问根目录的方法. 1:通过“前往文件夹”快捷键组合 (1)打开finder,点击上部菜单栏“前往”,然后“个人”,直接跳转. (2)快捷键组合:command + shift + G:注意:打开

Excel技巧|如何在Excel中快速的批量将unix时间戳转化为北京时间

本文标签:  Excel技巧 unix时间戳转化北京时间 Excel时间戳转化北京时间 互联网杂谈 批量将将unix时间戳转化为北京时间 方法/步骤 单击要获得北京时间的那一列,右键,选择[设置单元格格式],在弹出的窗口中,左侧选择 [日期],右侧选择你想要的时间格式,点击确定. 选中其中一个单元格,输入公式 =(A2+8*3600)/86400+70*365+19 其中,A2是要转化的时间戳的单元格. 输入完公式,按下[回车键]. 该时间戳即转化为北京时间. 选中上面转化好的北京时间单元格,鼠

MySQL中快速复制数据表方法汇总

本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表. 这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行 的数据表. 示例如下: 将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下: CREATE TABLE mytbl_new LIKE production.mytbl; INSERT mytbl_new SELECT * FROM production.mytbl; 第一个命令

接口测试中读取excel中的请求数据含有中文问题,UnicodeEncodeError: &#39;latin-1&#39; codec can&#39;t encode character &#39;\u5c0f&#39; in position

错误信息:UnicodeEncodeError: 'latin-1' codec can't encode character '\u5c0f' in position 31: Body ('小') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8的错误 原因:从excel中读取你的接口请求数据时带有中文时在发送求情时会出现上述错误.只需要将请求数据转化为bytes类型即可

IOS开发中数据持久化的几种方法--NSUserDefaults

IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefault是最简单直接的一个办法: 1)保存数据: 1 // 实例化一个NSUserDefaults单例对象 2 NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; 3 // 把一个数组array保存在key为allContact的键值

DELPHI中枚举类型数据的介绍和使用方法

在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类型数据的介绍和使用方法.见笑..------------------------------------------------------枚举类型 Pascal程序不仅用于数值处理,还更广泛地用于处理非数值的数据.例如,性别.月份.星期几.颜色.单位名.学历.职业等.1.枚举类型的定义格式: ty

Android数据存储的五种方法汇总

本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面将为大家一一详细介绍. 第一种: 使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置

PHP中获取文件扩展名的N种方法

PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法: function get_extension($file) { substr(strrchr($file, '.'), 1); } 第2种方法: function get_extension($file) { return substr($file, strrpos($file, '.')+1); } 第3种方法: function get_extension($file) { return end(expl