向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;}
转载于:https://www.cnblogs.com/fengbenwuxing/p/6957522.html
向EXECL文件中导入数据的同时插入图片相关推荐
- 从csv文件中导入数据到MySQL数据库
从csv文件中导入数据到MySQL数据库 转: 一.Workbench客户端导入(8.0.11基本导不全且速度奇慢) 1.点击如下图标创建数据库(非必要) 2.在表类上右键导入 二.SQL语句导入(可 ...
- mysql 导入tsv文件_HBase数据迁移(2)- 使用bulk load 工具从TSV文件中导入数据
英文原文摘自:<HBase Administration Cookbook>??编译:ImportNew?-?陈晨 本篇文章是对数据合并的系列文章之二(共三篇),针对的情景模式就是将现有的 ...
- 大数据_MapperReduce_从CSV文件中读取数据到Hbase_测试---Hbase工作笔记0022
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们继续看,这里我们写完以后,一会咱们去测试一下. 可以看到上一节我们已经写了,从csv文件中 ...
- python批量导入mysql_用python批量向数据库(MySQL)中导入数据
用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...
- 使用SSIS包将多个Excel文件中的数据导入SQL Server表中
This article explores an SSIS package for importing multiple Excel files data into SQL Server tables ...
- 把json数据导入linux,使用json文件给es中导入数据
使用json文件可以给es中导入数据,10万条左右的数据可以一次导入,数量太大时导入就会报错.大数量的到导入还是需要用bulk方式. accounts.json文件格式如下: {"index ...
- r导入txt乱码_R学习笔记系列—R语言从文本和Excel文件中读取数据-excel打开是乱码...
1.4.1 从文本文件中导入数据 可以使用 read.table() 函数从带分隔符的文本文件中导入数.调用格式为: 这个函数看上去很复杂,但其实很多参数在使用时不用明确指出来,使用默认值可以满足绝大 ...
- 在matlab中导入excel,Matlab导入Excel文件中的数据的详细教程分享
操作Matlab时还不会导入Excel文件中的数据?本文就介绍了Matlab导入Excel文件中的数据的操作内容,想要学习的朋友可以看一看下文哦,相信对大家会有所帮助的. 直接点击鼠标操作导入数据 打 ...
- 向HBase中导入数据3:使用MapReduce从HDFS或本地文件中读取数据并写入HBase(增加使用Reduce批量插入)
前面我们介绍了: 向HBase中导入数据1:查询Hive后写入 向HBase中导入数据2:使用MapReduce从HDFS或本地文件中读取数据并写入HBase(只使用Map逐条查询) 为了提高插入效率 ...
最新文章
- 在进行商业运算时解决BigDecimal的精度丢失问题
- java linux 时区_java同步/设置Linux系统时间
- python画动态爱心-使用Python画出小人发射爱心的代码
- Java高新技术第一篇:类加载器详解
- 基于tensorflow框架的神经网络结构处理mnist数据集
- 使用docker快速搭建nginx+php环境
- 学习C++和编程的50个观点
- Python3 三步爬楼梯问题
- Java FileInputStream finalize()方法与示例
- 解密:LL与LR解析 2(译,完结)
- 血型遗传关系c语言编程,根据血型遗传关系,编程实现:○1.输入
- util.java_TelnetUtil.java
- 过滤Android工程中多余的资源文件
- 4个独立按键实现对数码管数字显示的加减清零等
- 苹果mac绘图软件:AutoCAD
- Atitit.软件仪表盘(8)--os子系统--资源占用监测
- 软件测试需要学数学,数学软件测试有感
- i510200h和i78750h哪个好
- LintCode:1000. 买卖股票的最佳时机含手续费
- matlab算kappa系数,[转载]Kappa系数的计算及应用
热门文章
- 数据结构 二叉树的遍历
- 创建函数查找上级_一文秒懂JavaScript中对象的7种创建方式
- c# java 语法_Java与C#的语法区别
- linux g++ gcc编译c++哪个好,linux g++编译c++
- archer mysql源码_自动化运维工具inception+archer
- 【技术】交换机上如何对流量拦截
- java 判断题_Java面试题及解析(判断题)
- 全链路灰度这样做,新需求迭代上线也能放心干饭
- 阿里巴巴云原生 etcd 服务集群管控优化实践
- Knative 基于流量的灰度发布和自动弹性实践