因为项目需要在导出数据到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;}

转载于:https://www.cnblogs.com/fengbenwuxing/p/6957522.html

向EXECL文件中导入数据的同时插入图片相关推荐

  1. 从csv文件中导入数据到MySQL数据库

    从csv文件中导入数据到MySQL数据库 转: 一.Workbench客户端导入(8.0.11基本导不全且速度奇慢) 1.点击如下图标创建数据库(非必要) 2.在表类上右键导入 二.SQL语句导入(可 ...

  2. mysql 导入tsv文件_HBase数据迁移(2)- 使用bulk load 工具从TSV文件中导入数据

    英文原文摘自:<HBase Administration Cookbook>??编译:ImportNew?-?陈晨 本篇文章是对数据合并的系列文章之二(共三篇),针对的情景模式就是将现有的 ...

  3. 大数据_MapperReduce_从CSV文件中读取数据到Hbase_测试---Hbase工作笔记0022

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们继续看,这里我们写完以后,一会咱们去测试一下. 可以看到上一节我们已经写了,从csv文件中 ...

  4. python批量导入mysql_用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...

  5. 使用SSIS包将多个Excel文件中的数据导入SQL Server表中

    This article explores an SSIS package for importing multiple Excel files data into SQL Server tables ...

  6. 把json数据导入linux,使用json文件给es中导入数据

    使用json文件可以给es中导入数据,10万条左右的数据可以一次导入,数量太大时导入就会报错.大数量的到导入还是需要用bulk方式. accounts.json文件格式如下: {"index ...

  7. r导入txt乱码_R学习笔记系列—R语言从文本和Excel文件中读取数据-excel打开是乱码...

    1.4.1 从文本文件中导入数据 可以使用 read.table() 函数从带分隔符的文本文件中导入数.调用格式为: 这个函数看上去很复杂,但其实很多参数在使用时不用明确指出来,使用默认值可以满足绝大 ...

  8. 在matlab中导入excel,Matlab导入Excel文件中的数据的详细教程分享

    操作Matlab时还不会导入Excel文件中的数据?本文就介绍了Matlab导入Excel文件中的数据的操作内容,想要学习的朋友可以看一看下文哦,相信对大家会有所帮助的. 直接点击鼠标操作导入数据 打 ...

  9. 向HBase中导入数据3:使用MapReduce从HDFS或本地文件中读取数据并写入HBase(增加使用Reduce批量插入)

    前面我们介绍了: 向HBase中导入数据1:查询Hive后写入 向HBase中导入数据2:使用MapReduce从HDFS或本地文件中读取数据并写入HBase(只使用Map逐条查询) 为了提高插入效率 ...

最新文章

  1. 在进行商业运算时解决BigDecimal的精度丢失问题
  2. java linux 时区_java同步/设置Linux系统时间
  3. python画动态爱心-使用Python画出小人发射爱心的代码
  4. Java高新技术第一篇:类加载器详解
  5. 基于tensorflow框架的神经网络结构处理mnist数据集
  6. 使用docker快速搭建nginx+php环境
  7. 学习C++和编程的50个观点
  8. Python3 三步爬楼梯问题
  9. Java FileInputStream finalize()方法与示例
  10. 解密:LL与LR解析 2(译,完结)
  11. 血型遗传关系c语言编程,根据血型遗传关系,编程实现:○1.输入
  12. util.java_TelnetUtil.java
  13. 过滤Android工程中多余的资源文件
  14. 4个独立按键实现对数码管数字显示的加减清零等
  15. 苹果mac绘图软件:AutoCAD
  16. Atitit.软件仪表盘(8)--os子系统--资源占用监测
  17. 软件测试需要学数学,数学软件测试有感
  18. i510200h和i78750h哪个好
  19. LintCode:1000. 买卖股票的最佳时机含手续费
  20. matlab算kappa系数,[转载]Kappa系数的计算及应用

热门文章

  1. 数据结构 二叉树的遍历
  2. 创建函数查找上级_一文秒懂JavaScript中对象的7种创建方式
  3. c# java 语法_Java与C#的语法区别
  4. linux g++ gcc编译c++哪个好,linux g++编译c++
  5. archer mysql源码_自动化运维工具inception+archer
  6. 【技术】交换机上如何对流量拦截
  7. java 判断题_Java面试题及解析(判断题)
  8. 全链路灰度这样做,新需求迭代上线也能放心干饭
  9. 阿里巴巴云原生 etcd 服务集群管控优化实践
  10. Knative 基于流量的灰度发布和自动弹性实践