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


本文摘自PHP中文网,作者零下一度,侵删。

因为项目需要在导出数据到EXECL文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下。

首先代码写好之后放测试服务器上去执行的时候报错了,报检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

这个解决方法我基本上是按照网上来进行解决的,但是需要注意的就是,设置完权限之后,还需要在服务器安装的office文件夹分配权限。

权限问题设置完之后就是调试代码了,网上搜索到的资料都是先插入数据,然后在数据的最后插入图片,而不是我想要的每一行都有图片,所以不符合我的需求,于是就自己看着网上的代码整吧整吧。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

/// <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文件中同时导入数据和插入图片?的详细内容!

相关阅读 >>

asp.net mvc中传参并绑定数据的实例教程

如何判断文件是否存在于perl中

.net core之实现下载文件的实例

分享asp.net学习笔记(6)webpages 文件

对mvc进行数据验证详解

详解多图片/文件服务器的实现过程

总结mvc中数据验证实例

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

如何实现datagridview的添加删除修改?

asp.net中session失效是怎么解决的?

更多相关阅读请进入《EXECL》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...