首页 新闻 会员 周边

c#导出图片到excel

0
悬赏园豆:5 [已解决问题] 解决于 2024-05-06 17:12

现在有近10000条数据,每条数据有2到3张图片,并且要导出到excel,图片要通过WebClient下载,导致现在导出这个excel很慢
有木有优化的思路

灬丶的主页 灬丶 | 初学一级 | 园豆:4
提问于:2023-04-27 13:25

用多线程分组并发操作试试

码上有钱(why) 1年前
< >
分享
最佳答案
0

首先是否有能力优化打包(也就是excel的创建)过程,这一步是主要消费点。松散文件打包成一个大文件,能优化的地方不多,如优化内存拷贝,优化打包过程,优化磁盘写入。

如果是我,第一步先扔弃npoi等excel工具,打包估计就不用太折腾了,专业人员干的活,大概只会去优化打包前和打包后,打包可以尝试找专业人员搞的优化算法。

打包前,根据服务器情况调整合理线程数并发下载,尽可能占用完带宽极限,内存管够,尽可能使用内存,多使用栈,减少堆使用。

因为row数据是存储一个地方的(参看openxml),那么数据行应该一次性搞定,降低cpu消费次数以及内存来回搬运过程。

打包后,一方面是根据文件系统调整buffer参数,原则上4k倍数,大内存扔硬盘。

收获园豆:2
花飘水流兮 | 专家六级 |园豆:13571 | 2023-05-12 23:30
其他回答(5)
0

图片存在啥地方?

ycyzharry | 园豆:25663 (高人七级) | 2023-04-27 14:32

华为oos

支持(0) 反对(0) 灬丶 | 园豆:4 (初学一级) | 2023-04-28 19:48
0

图片导到本地机?

tea2007 | 园豆:1 (初学一级) | 2023-04-28 09:58

是的

支持(0) 反对(0) 灬丶 | 园豆:4 (初学一级) | 2023-04-28 19:48
0

将近10000条数据每条都下载2到3张图片并导出到Excel确实会很慢,这主要是因为网络请求和图片下载会消耗大量的时间。以下是一些优化思路:

尽量减少网络请求次数:可以将多个图片一起打包下载,或者使用图片的缩略图或预览图代替原图。

采用多线程或异步操作:可以通过多线程或异步操作并发地下载图片和导出Excel,以提高效率。

采用缓存:可以将已经下载的图片缓存到本地,下次再需要使用时直接从缓存中读取,以减少重复下载和网络请求。

调整Excel导出方式:可以尝试使用其他格式的文件替代Excel,如CSV格式等。

数据分批处理:可以将数据分成多个批次处理,每个批次只处理一部分数据,以降低单次处理的数据量。

综上所述,可以采用以上优化思路来改进图片下载和Excel导出的性能。同时,需要根据具体情况进行优化,以达到最佳的效果。

收获园豆:1
Technologyforgood | 园豆:6160 (大侠五级) | 2023-04-30 21:16
0

主要耗时还是在实时下载图片上。
可以单独写一个定时任务把这些图片提前离线下载到指定目录。

原来的程序稍作修改,取图片优先从本地获取,没有找到才实时去下载。

收获园豆:1
智客工坊 | 园豆:1858 (小虾三级) | 2023-05-03 17:13
0

你好,可以私聊我用别的语言帮您解决

收获园豆:1
Biuget-Golang | 园豆:784 (小虾三级) | 2023-05-06 10:26

我们是c#啊

支持(0) 反对(0) 灬丶 | 园豆:4 (初学一级) | 2023-05-11 16:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册