二维数组-C#中如何大幅提高写excel文件的速度?

问题描述

C#中如何大幅提高写excel文件的速度?

输入文件:input.txt包含以【;】号或者【t】制表符分隔的多行(实际在100万行以上)数据,每行数据个数不定。

a;b;c
1;2;
1;2;3;4;5

输出文件;output.xlsx

a b c
1 2

1 2 3 4 5

问题:写了个小程序处理2000行在10s以内,百万行速度就太慢,无法忍受了。求教一些能显著提高写Excel速度的方法。网上查的先变成二维数组之类的方法,效果不大。百万行在20min以内就好。

解决方案

你完全没有任何性能调优的概念,我们从最简单的说起
首先,测试你的数据,找到运行时间和数据量的关系(算法复杂度)。
先告诉我你的程序处理2000行 5000 行 1万行 2万行 5万行 10万行的时间。

解决方案二:

不知道你是不是读一行写一行的,如果是的话,可以改成把数据都读出来,在一起写进去

解决方案三:

写入数据可参考(并行处理)[https://msdn.microsoft.com/zh-cn/library/dd537609(v=vs.110).aspx]

时间: 2024-11-03 07:20:21

二维数组-C#中如何大幅提高写excel文件的速度?的相关文章

指针-关于二维数组a中,a[1] 与 &a[1]相等的一个疑问?(从来没弄懂)

问题描述 关于二维数组a中,a[1] 与 &a[1]相等的一个疑问?(从来没弄懂) 对二维数组a[][]来说,a[1] 与 &a[1]相等.我来分析一下我的误解: 首先,a[m] 里面的内容是一个一维数组的首地址. 而 &a[m] 是 a[m] 的地址,它们相等. 说明 a[m] 的内容其实就是他本身的地址编号 (把 a[m] 看成一个变量) 对于一个内容就是地址的变量m,&m 与 m 相等 毋庸置疑. 然而 &a[m][0] 也等于 a[m] 说明 a[m][0]

java 二维数组-java中把两个维数相同的矩阵对应的元素相加得到新的矩阵的代码

问题描述 java中把两个维数相同的矩阵对应的元素相加得到新的矩阵的代码 java中把两个维数相同的矩阵对应的元素相加得到新的矩阵的代码怎么写,在int[][] add(int[][]a,int[][] b)中添加代码,实现这个功能 解决方案 循环不就行了,和遍历差不多.

C语言中实现动态分配二维数组

在C语言中动态的一维数组是通过malloc动态分配空间来实现的,动态的二维数组也可以通过malloc动态分配空间来实现. 实际上,C语言中没有二维数组,至少对二维数组没有直接的支持,取而代之的是"数组的数组",二维数组可以看成是由指向数组的指针构成的数组.对于一个二维数组p[i][j],编译器通过公式*(*(p+i)+j)求出数组元素的值: 1.p+i 计算行指针. 2.*(P+i) 具体的行,是一个指针,指向该行首元素地址. 3.*(P+i)+j 得到具体元素的地址. 4.*(*(p

c++-C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中?

问题描述 C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中? //此程序是我自己编的,但是不能通过,请问这是怎么回事? #include using namespace std; int main() { int n,m,k,i,j,l; cin>>n>>m>>k; int X[][]={0}; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { X[i][j]=i*j; } int Y[]={0}; for(i=1;i

《C语言及程序设计》程序填空——二维数组

返回:贺老师课程教学链接 1.下面的程序,要输出行.列号之和为3的数组元素,请将程序补充完整. #include <stdio.h> int main( ) { char ss[4][3]= {'A','a','f','c','B','d','e','b', 'C','g','f','D'}; int x,y,z; for (x=0; ______(1)______; x++) for (y=0; ______(2)______ ; y++) { z=x+y; if (______(3)___

可以用一个一级指针指向一个二维数组吗?

问题描述 可以用一个一级指针指向一个二维数组吗? 看到书上写的都是二级指针,如int *p[4]等等, 数组不是在内存中的存储是连续的吗, 为什么不用一级指针直接指向第一个元素呢? 解决方案 直接用一个指针,就可以完成指向数组的功能,无论数组是多少维.只是指向后,如果控制下标需要自己考虑.其实,数组名就可以认为是一个静态的指针. 解决方案二: 建议你读下这篇文章http://www.cnblogs.com/wanpengcoder/archive/2010/07/17/1779503.html

javascript-JS二维数组对比的问题

问题描述 JS二维数组对比的问题 var boxTemp = box.concat(); down(); if(boxTemp.sort().toString() != box.sort().toString()){ madeDiv(); } 每次执行完down()之后,boxTemp的值就会跟着变,导致if每次都是false,我应该怎么改? 解决方案 js的二维数组JS中如何使用二维数组js 二维数组实现 解决方案二: 谁知道你down里面做了什么处理,如果boxTemp变了那么你肯定操作了b

二维数组的认识及其表示元素的两种方式

/* ============================================================================ Name : TeatArr.c Author : lf Version : Copyright : Your copyright notice Description : 二维数组的认识以及其表示元素的两种方式 备注说明 1 要理解二维数组的存储方式. 2 实际上利用a[i][j]的方式并不"正统",但这靠近我们的 常识一些,

返回二维数组 语言-关于调用函数返回二维数组的问题

问题描述 关于调用函数返回二维数组的问题 我想调用一个函数,返回二维数组,但是一直不对,写了一个简单的程序,还请各位大神给看一下, #include #include float*q[3];int i,j; int main() { float f[3][2],A[3][2]; float*(TIME(float E[3][2])); for(i=0;i<=2;i++) { for(j=0;j<=1;j++) {f[i][j]=j+i;printf("%fn",f[i][j