使用NPOI将多张图片导入execl

 protected void btn_Export_Click(object sender, EventArgs e)
    {
        List<BNXX_SJXJ_XJSJ> list = ViewState["data"] as List<BNXX_SJXJ_XJSJ>;

        string[] AppPaths = HttpRuntime.AppDomainAppPath.ToString().Split(‘\\‘);
        string PicPath = string.Empty;
        for (int i = 0; i < AppPaths.Length - 2; i++)
        {
            PicPath = PicPath + "/" + AppPaths[i];
        }
        PicPath = PicPath.Substring(1) + "/mytest/Photos";
        ///调用模板,先保存,后下载
        string path = Server.MapPath("../../template/SJingSJ.xls");
        using (FileStream fs = File.OpenRead(path))
        {
            using (Workbook wk = new HSSFWorkbook(fs))
            {
                int pictureIndex1 = AddPictureToWorkbook(list[0].XQSY, PicPath, wk);
                int pictureIndex2 = AddPictureToWorkbook(list[0].XZSY, PicPath, wk);
                int pictureIndex3 = AddPictureToWorkbook(list[0].XHSY, PicPath, wk);

                using (Sheet sheet = wk.GetSheetAt(0))
                {
                    sheet.GetRow(1).GetCell(3).SetCellValue(list[0].JH);
                    sheet.GetRow(1).GetCell(10).SetCellValue(list[0].FZR);
                    sheet.GetRow(1).GetCell(15).SetCellValue(list[0].XJRQ);
                    sheet.GetRow(2).GetCell(6).SetCellValue(list[0].GCZSQDYL1);
                    sheet.GetRow(3).GetCell(6).SetCellValue(list[0].GCZSQDYL2);
                    sheet.GetRow(4).GetCell(6).SetCellValue(list[0].GCZSQDYL3);
                    sheet.GetRow(5).GetCell(6).SetCellValue(list[0].GY);
                    sheet.GetRow(6).GetCell(6).SetCellValue(list[0].YY);
                    sheet.GetRow(7).GetCell(6).SetCellValue(list[0].PZ);
                    sheet.GetRow(8).GetCell(6).SetCellValue(list[0].SZ);
                    sheet.GetRow(9).GetCell(6).SetCellValue(list[0].XJYYJMB);
                    sheet.GetRow(2).GetCell(13).SetCellValue(list[0].LC);
                    sheet.GetRow(3).GetCell(13).SetCellValue(list[0].XJYB);
                    sheet.GetRow(4).GetCell(13).SetCellValue(list[0].JYGX);
                    sheet.GetRow(5).GetCell(13).SetCellValue(list[0].XQ);
                    sheet.GetRow(6).GetCell(13).SetCellValue(list[0].GCXJ);

                    sheet.GetRow(10).GetCell(5).SetCellValue(list[0].YXJSJ);
                    sheet.GetRow(10).GetCell(10).SetCellValue(list[0].YXJYL);
                    sheet.GetRow(10).GetCell(15).SetCellValue(list[0].YXJPL);

                    sheet.GetRow(11).GetCell(5).SetCellValue(list[0].EXJSJ);
                    sheet.GetRow(11).GetCell(10).SetCellValue(list[0].EXJYL);
                    sheet.GetRow(11).GetCell(15).SetCellValue(list[0].EXJPL);

                    sheet.GetRow(12).GetCell(5).SetCellValue(list[0].SXJSJ);
                    sheet.GetRow(12).GetCell(10).SetCellValue(list[0].SXJYL);
                    sheet.GetRow(12).GetCell(15).SetCellValue(list[0].SXJPL);

                    sheet.GetRow(13).GetCell(4).SetCellValue(list[0].YXJSJ2);
                    sheet.GetRow(13).GetCell(10).SetCellValue(list[0].YXJYL2);
                    sheet.GetRow(13).GetCell(15).SetCellValue(list[0].YJKPL);
                    sheet.GetRow(14).GetCell(15).SetCellValue(list[0].YCKPL);

                    sheet.GetRow(15).GetCell(4).SetCellValue(list[0].EXJSJ2);
                    sheet.GetRow(15).GetCell(10).SetCellValue(list[0].EXJYL2);
                    sheet.GetRow(15).GetCell(15).SetCellValue(list[0].EJKPL);
                    sheet.GetRow(16).GetCell(15).SetCellValue(list[0].ECKPL);

                    sheet.GetRow(17).GetCell(4).SetCellValue(list[0].SXJSJ2);
                    sheet.GetRow(17).GetCell(10).SetCellValue(list[0].SXJYL2);
                    sheet.GetRow(17).GetCell(15).SetCellValue(list[0].SJKPL);
                    sheet.GetRow(18).GetCell(15).SetCellValue(list[0].SCKPL);

                    sheet.GetRow(19).GetCell(4).SetCellValue(list[0].XJCH);
                    sheet.GetRow(20).GetCell(4).SetCellValue(list[0].XJXG);

                    sheet.GetRow(23).GetCell(2).SetCellValue(list[0].XQSYSJ);
                    sheet.GetRow(23).GetCell(5).SetCellValue(list[0].XZSYSJ);
                    sheet.GetRow(23).GetCell(12).SetCellValue(list[0].XHSYSJ);

                    InsertPictureToSheet(sheet, pictureIndex1, 2, 24, 4, 24);
                    InsertPictureToSheet(sheet, pictureIndex2, 5, 24, 11, 24);
                    InsertPictureToSheet(sheet, pictureIndex3, 12, 24, 16, 24);

                    //AddPictureToExecl(list[0].XQSY, PicPath, wk, sheet, 2, 24, 4, 24);
                    //AddPictureToExecl(list[0].XZSY, PicPath, wk, sheet, 5, 24, 11, 24);
                    //AddPictureToExecl(list[0].XHSY, PicPath, wk, sheet, 12, 24, 16, 24);
                    string outputPath = Server.MapPath("../../OutPut/注水井洗井设计报表.xls");
                    using (FileStream files = new FileStream(outputPath, FileMode.Create))
                    {
                        wk.Write(files);
                    }

                    Response.Clear();
                    Response.Buffer = true;
                    Response.Charset = "utf-8";
                    Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("注水井洗井设计报表", System.Text.Encoding.UTF8) + ".xls");
                    Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");     //设置输出流为简体中文
                    Response.ContentType = "application/ms-execl";    //设置输出文件类型为excel文件。
                    Response.WriteFile(outputPath);
                    Response.End();
                }
            }
        }
    }

 //2, 24, 4, 24
    private int AddPictureToWorkbook(string picName, string PicPath, Workbook wk)
    {
        bool isExists = true;
        if (!string.IsNullOrEmpty(picName))
        {
            PicPath = PicPath + "/" + picName;
            isExists = Directory.Exists(PicPath);
        }
        else
        {
            isExists = false;
        }
        if (!isExists)
        {
            PicPath = Server.MapPath("../../Images/Button/Defalut .jpg");
        }
        byte[] bytes = System.IO.File.ReadAllBytes(PicPath);
        int pictureIdx = wk.AddPicture(bytes, PictureType.JPEG);
        return pictureIdx;
    }

private void InsertPictureToSheet(Sheet sheet, int pictureIdx, int StartX, int StartY, int EndX, int EndY)
    {
        Drawing patriarch = sheet.CreateDrawingPatriarch();
        HSSFClientAnchor anchor = new HSSFClientAnchor(255, 125, 1023, 150, StartX, StartY, EndX, EndY);
        Picture pict = patriarch.CreatePicture(anchor, pictureIdx);
        pict.Resize(1);
    }

时间: 2024-10-13 06:39:06

使用NPOI将多张图片导入execl的相关文章

SqlServer2008 脚本导入Execl数据

使用SQL脚本导入Execl数据,是使用SQL的链接服务器的访问接口来完成的. 1.所以首先,需要数据库中有对应的Execl访问接口,使用的是SQlServer2008R2+Office2013,所以安装使用的是ACE2010的驱动 下载地址:  http://www.microsoft.com/zh-cn/download/details.aspx?id=13255 安装之后在数据会有对应的访问接口 2.开启Ad Hoc Distributed Queries --开启Ad Hoc Distr

fileupload NPOI导入EXECL数据

fileupload JS @section scripts{ <script src="~/Content/js/fileupload/vendor/jquery.ui.widget.js"></script> <script src="~/Content/js/fileupload/jquery.fileupload.js"></script> <script type="text/javascri

c#关于导入execl

由于工作需要,经常要添加新的产品,涉及到数量多了就得考虑批量处理. //此驱动对应的Execl格式为 xls string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'"; //此驱动对应的Execl格式为 xlsx     HDR=Y

基于NPOI的Excel数据导入

从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请移步:https://github.com/xuanbg/Utility 概述: 这个帮助类是一个泛型类,泛型参数对应的实体类还起到模板的作用.如果你的Excel文件使用与实体类不同的列标题的话,可以通过给属性加上Alias特性,将列标题和属性进行对应.例如: Excel格式如图: 实体类: 1 u

NPOI读取Excel,导入数据到Excel练习01

NPOI 2.2.0.0,初级读取导入Excel 1.读取Excel,将数据绑定到dgv上 1 private void button1_Click(object sender, EventArgs e) 2 { 3 List<Book> books = new List<Book>(); 4 //1.读取Excel文件 5 using (FileStream fsReder = File.OpenRead("练习.xlsx")) 6 { 7 //2.创建工作簿

同时向主表和从表里面导入execl数据 (asp.net webform)

//前台 <asp:FileUpload ID="UPExecl" runat="server" /> <asp:Button ID="BtnExecl" runat="server" Text="确认" OnClick="BtnExecl_Click" /> //批量导入销售发货单 protected void BtnExecl_Click(object sen

[Cyan之旅]使用NPOI实现Excel的导入导出,踩坑若干.

Cyan是博主[Soar360]自2014年以来开始编写整理的工具组件,用于解决现实工作中常用且与业务逻辑无关的问题. 什么是NPOI? NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. 来自:

NPOI导出多张图片到Excel

常用NPOI导出数据到excel,但没有试过如何导出图片.NPOI最大的特点就是不依赖于Excel组件,服务端不需要安装Excel.在单元格中插入图片主要是用HSSFClientAnchor对象.他有8个参数. HSSFClientAnchor anchor = new HSSFClientAnchor(dx1, dy1, dx2, dy2, col1, row1, col2, row2); 前面四个表示在单元格中两个点的位置,后面四个表示是哪个单元格.先看代码. public FileResu

【NPOI】.NET EXCEL导入导出开发包

1.导出 //工作簿HSSFWorkbook HSSFWorkbook hssfworkbook = new HSSFWorkbook(); //ISheet页 ISheet sheet1 = hssfworkbook.CreateSheet("员工资料"); //创建行 IRow rowHeader = sheet1.CreateRow(0); //设置第一行中的每一个单元格 rowHeader.CreateCell(0, CellType.STRING).SetCellValue(