首页后端开发ASP.NET怎么在EXECL文件中同时导入数据和插入图片?

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

时间2024-01-30 09:51:02发布访客分类ASP.NET浏览1025
导读:收集整理的这篇文章主要介绍了怎么在EXECL文件中同时导入数据和插入图片?,觉得挺不错的,现在分享给大家,也给大家做个参考。因为项目需要在导出数据到Execl文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下。首先代码写好之...
收集整理的这篇文章主要介绍了怎么在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文件中同时导入数据和插入图片?的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

同时导入数据

若转载请注明出处: 怎么在EXECL文件中同时导入数据和插入图片?
本文地址: https://pptw.com/jishu/592363.html
直接调用vs反射调用实例教程 深入了解Angular中的路由,如何快速上手?

游客 回复需填写必要信息