一种批量插入图片到Excel的方法与流程

文档序号:20189410发布日期:2020-03-27 19:29阅读:1087来源:国知局
一种批量插入图片到Excel的方法与流程

本发明涉及web应用与开发技术领域,具体涉及一种批量插入图片到excel的方法。



背景技术:

microsoftexcel是microsoft为使用windows和applemacintosh操作系统的电脑编写的一款电子表格软件,拥有直观的界面、出色的计算功能和图表工具。

图片是指由图形、图像等构成的平面媒体。图片的格式很多,但总体上可以分为点阵图和矢量图两大类,我们常用bmp、jpg等格式都是点阵图形,而swf、cdr、ai等格式的图形属于矢量图形。

通常情况下excel中插入图片,需要人工干预,若大批量操作,人工工作量大,效率很低。本发明通过数学与统计学方法,根据一定的算法,通过计算机程序处理快速并批量插入图片到excel中,解决了人工操作excel插入图片效率低,工作量的问题,可广泛应用于web应用与开发过程中。



技术实现要素:

本发明解决的技术问题在于提供一种批量插入图片到excel的方法;解决了人工操作excel插入图片效率低,工作量的问题。

本发明解决上述技术问题的技术方案是:

所述的方法包含以下几个步骤:

步骤一、读取excel文件数据;

步骤二、读取将要插入的图片数据;

步骤三、加载excel数据到内并循环excel工作表;

步骤四、转换插入图片为数据流并创建图片画布;

步骤五、循环所有图片并设置图片位置写入excel工作表中;

步骤六、保存并输出插入图片后excel文件。

所述的批量插入图片到excel的方法,步骤一中,创建文件对象,根据路径加载excel文件并打开,转换excel文件为文件流并保存在内存中。

所述的步骤二中,磁盘中选择要插入的图片,可批量选择多个,读取图片数据并转换成对象保存在集合中。

所述的步骤三中,加载excel文件数据到内存中,读取所有工作表对象,并循环所有工作表。

所述的步骤四中,转换所有插入图片为数据流并加载到内存中,根据图片流创建图片对象。

所述的步骤五中,循环所有工作表和所有插入的图片对象,设置插入图片的位置和图片的大小,将图片写入excel工作表中。

所述的步骤六中,完成步骤五中图片写入的工作,将写入图片后的excel文件对象转换成bit对象,并调用文件更新方法更新,保存并输出插入图片后excel文件。

本发明解决了人工操作excel插入图片效率低,工作量的问题,可广泛应用于web应用和开发过程中。

附图说明

下面结合附图对本发明进一步说明:

图1是本发明方法流程图。

具体实施方式

如图1所示,本发明具体包含以下几个步骤:

步骤一、读取excel文件数据;

步骤二、读取将要插入的图片数据;

步骤三、加载excel数据到内并循环excel工作表;

步骤四、转换插入图片为数据流并创建图片画布;

步骤五、循环所有图片并设置图片位置写入excel工作表中;

步骤六、保存并输出插入图片后excel文件。

所述的步骤一中,创建文件对象,根据路径加载excel文件并打开,转换excel文件为文件流并保存在内存中。

webclientclient=newwebclient();vardownloadurl=fileoperater.getdownloadurl("1b0b5a1b.xls");varexceldata=client.downloaddata(downloadurl);

所述的步骤二中,磁盘中选择要插入的图片,可批量选择多个,读取图片数据并转换成对象保存在集合中。

所述的步骤三中,加载excel文件数据到内存中,读取所有工作表对象,并循环所有工作表。

using(streamms=newmemorystream(exceldata))

{

excelpackageexcel=excel=newexcelpackage(ms);

excelworksheetws=excel.workbook.worksheets[1];

excelworkbookwb=excel.workbook;

}

所述的步骤四中,转换所有插入图片为数据流并加载到内存中,根据图片流创建图片对象。

varbytes=client.downloaddata("xxxx/2084458_s.jpg");

streamimgms=newmemorystream(bytes);

所述的步骤五中,循环所有工作表和所有插入的图片对象,设置插入图片的位置和图片的大小,将图片写入excel工作表中。

intvsheetcount=excel.workbook.worksheets.count;

for(inti=1;i<=vsheetcount;i++)

{

ws=excel.workbook.worksheets[i];

using(streamimgms=newmemorystream(bytes))

{

system.drawing.bitmapmyimge=newsystem.drawing.bitmap(imgms);

excelpicturepicture=null;

for(intj=0;j<4;j++)

{

picture=ws.drawings.addpicture("a"+j,myimge);//插入图片

if(j>1)

{

picture.setposition(560,250*(j-2)+(j-1)*40);/

}

else

{

picture.setposition(330,250*j+(j+1)*40);

}

picture.setsize(250,220);

}}}

所述的步骤六中,完成步骤五中图片写入的工作,将写入图片后的excel文件对象转换成bit对象,并调用文件更新方法更新,保存并输出插入图片后excel文件;

fileoperater.fileupdate("xxx.xls",excel.getasbytearray())。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1