Excel主要经历1.查询2.渲染的方式
关于查询:
不同技术水平的人有不同的解决方案,目前我采用的是
1:多线程查询
2:一个异步后台线程每次查询100条便渲染,采用的“懒加载方式”,这样可以做到实时差看,程序也不阻塞
关于渲染:
网上普遍的方式都是采用一行一行的加载,但是对于百万级别的数据就有点吃力了。
我想还是把时间放在查询上吧。
所有找来找去,【矩阵加载】的方式找到,亲测,100万条数据,10s内加载完成,附上源码:
DataTable table = ds.Tables[0];
int r = table.Rows.Count;
int c = table.Columns.Count;
object[,] objarr = new object[r, c];
try
{
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
objarr[i, j] = table.Rows[i].ItemArray[j];
}
}
Microsoft.Office.Interop.Excel.Range rng;
//定义范围
rng = sh.Range[sh.Cells[1, 1], sh.Cells[r, c]];
//数组赋值工作表范围
rng.Value2 = objarr;