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

Posted robzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了往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;
}

 

以上是关于往Excel中快速写入数据的又一种方法的主要内容,如果未能解决你的问题,请参考以下文章

《轻量级Java Web整合开发入门SSH》 - 快速理解Java框架的又一积木

iapp如何编写IC卡数据写入软件

有没有一种使用 Python Openpyxl 在 Excel 中写入数据的简洁方法?

入门Splay--tarjan大佬的又一发明

使用 Excel 对象快速设置数字格式

忙碌的又一天——3.27