您好,欢迎访问一九零五行业门户网

怎么在EXECL文件中同时导入数据和插入图片?

因为项目需要在导出数据到execl文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下。
首先代码写好之后放测试服务器上去执行的时候报错了,报检索 com 类工厂中 clsid 为 {00024500-0000-0000-c000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。
这个解决方法我基本上是按照网上来进行解决的,但是需要注意的就是,设置完权限之后,还需要在服务器安装的office文件夹分配权限。
权限问题设置完之后就是调试代码了,网上搜索到的资料都是先插入数据,然后在数据的最后插入图片,而不是我想要的每一行都有图片,所以不符合我的需求,于是就自己看着网上的代码整吧整吧。
/// <summary>/// /// </summary>/// <param name="dt">数据源</param>/// <param name="filepath">文件路劲例如(e:\\execl\\201706070001.xls)</param>protected void exportexcel(datatable dt, string filepath)         {if (dt == null || dt.rows.count == 0) return;             microsoft.office.interop.excel.application xlapp = new microsoft.office.interop.excel.application();object m_objopt = system.reflection.missing.value;if (xlapp == null)             {return;             }//system.globalization.cultureinfo currentci = system.threading.thread.currentthread.currentculture;system.threading.thread.currentthread.currentculture = new system.globalization.cultureinfo(en-us);             microsoft.office.interop.excel.workbooks workbooks = xlapp.workbooks;             microsoft.office.interop.excel.workbook workbook = workbooks.add(microsoft.office.interop.excel.xlwbatemplate.xlwbatworksheet);             microsoft.office.interop.excel.worksheet worksheet = (microsoft.office.interop.excel.worksheet)workbook.worksheets[1];             microsoft.office.interop.excel.range range;long totalcount = dt.rows.count;long rowread = 0;for (int i = 0; i < dt.columns.count; i++)             {                 worksheet.cells[1, i + 1] = dt.columns[i].columnname;                 range = (microsoft.office.interop.excel.range)worksheet.cells[1, i + 1];                 range.interior.colorindex = 15;             }for (int r = 0; r < dt.rows.count; r++)             {for (int i = 0; i < dt.columns.count; i++)                 {try{if (i == 4)                         {                             range = worksheet.get_range(e + (r + 2), m_objopt); //这里是因为我要给文档的e列插入图片,所以加了判断,并写死了e列                             range.select();float picleft, pictop;                             picleft = convert.tosingle(range.left);                             pictop = convert.tosingle(range.top);                             range.columnwidth = 60;//设置单元格的宽                             range.rowheight = 120;//设置单元格的高worksheet.shapes.addpicture(dt.rows[r][i].tostring(), microsoft.office.core.msotristate.msofalse, microsoft.office.core.msotristate.msoctrue, picleft, pictop, 100, 100);//这后面的100 是设置图片的宽高                         }elseworksheet.cells[r + 2, i + 1] = dt.rows[r][i].tostring();                     }catch{                         worksheet.cells[r + 2, i + 1] = dt.rows[r][i].tostring().replace(=, );                     }                 }                 rowread++;             }             xlapp.visible = true;             workbook.saved = true;             workbook.saveas(filepath);             workbook.close(true, type.missing, type.missing);             workbook = null;             xlapp.quit();             xlapp = null;         }
以上就是怎么在execl文件中同时导入数据和插入图片?的详细内容。
其它类似信息

推荐信息