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 = ; i < AppPaths.Length - ; i++)
{
PicPath = PicPath + "/" + AppPaths[i];
}
PicPath = PicPath.Substring() + "/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[].XQSY, PicPath, wk);
int pictureIndex2 = AddPictureToWorkbook(list[].XZSY, PicPath, wk);
int pictureIndex3 = AddPictureToWorkbook(list[].XHSY, PicPath, wk); using (Sheet sheet = wk.GetSheetAt())
{
sheet.GetRow().GetCell().SetCellValue(list[].JH);
sheet.GetRow().GetCell().SetCellValue(list[].FZR);
sheet.GetRow().GetCell().SetCellValue(list[].XJRQ);
sheet.GetRow().GetCell().SetCellValue(list[].GCZSQDYL1);
sheet.GetRow().GetCell().SetCellValue(list[].GCZSQDYL2);
sheet.GetRow().GetCell().SetCellValue(list[].GCZSQDYL3);
sheet.GetRow().GetCell().SetCellValue(list[].GY);
sheet.GetRow().GetCell().SetCellValue(list[].YY);
sheet.GetRow().GetCell().SetCellValue(list[].PZ);
sheet.GetRow().GetCell().SetCellValue(list[].SZ);
sheet.GetRow().GetCell().SetCellValue(list[].XJYYJMB);
sheet.GetRow().GetCell().SetCellValue(list[].LC);
sheet.GetRow().GetCell().SetCellValue(list[].XJYB);
sheet.GetRow().GetCell().SetCellValue(list[].JYGX);
sheet.GetRow().GetCell().SetCellValue(list[].XQ);
sheet.GetRow().GetCell().SetCellValue(list[].GCXJ); sheet.GetRow().GetCell().SetCellValue(list[].YXJSJ);
sheet.GetRow().GetCell().SetCellValue(list[].YXJYL);
sheet.GetRow().GetCell().SetCellValue(list[].YXJPL); sheet.GetRow().GetCell().SetCellValue(list[].EXJSJ);
sheet.GetRow().GetCell().SetCellValue(list[].EXJYL);
sheet.GetRow().GetCell().SetCellValue(list[].EXJPL); sheet.GetRow().GetCell().SetCellValue(list[].SXJSJ);
sheet.GetRow().GetCell().SetCellValue(list[].SXJYL);
sheet.GetRow().GetCell().SetCellValue(list[].SXJPL); sheet.GetRow().GetCell().SetCellValue(list[].YXJSJ2);
sheet.GetRow().GetCell().SetCellValue(list[].YXJYL2);
sheet.GetRow().GetCell().SetCellValue(list[].YJKPL);
sheet.GetRow().GetCell().SetCellValue(list[].YCKPL); sheet.GetRow().GetCell().SetCellValue(list[].EXJSJ2);
sheet.GetRow().GetCell().SetCellValue(list[].EXJYL2);
sheet.GetRow().GetCell().SetCellValue(list[].EJKPL);
sheet.GetRow().GetCell().SetCellValue(list[].ECKPL); sheet.GetRow().GetCell().SetCellValue(list[].SXJSJ2);
sheet.GetRow().GetCell().SetCellValue(list[].SXJYL2);
sheet.GetRow().GetCell().SetCellValue(list[].SJKPL);
sheet.GetRow().GetCell().SetCellValue(list[].SCKPL); sheet.GetRow().GetCell().SetCellValue(list[].XJCH);
sheet.GetRow().GetCell().SetCellValue(list[].XJXG); sheet.GetRow().GetCell().SetCellValue(list[].XQSYSJ);
sheet.GetRow().GetCell().SetCellValue(list[].XZSYSJ);
sheet.GetRow().GetCell().SetCellValue(list[].XHSYSJ); InsertPictureToSheet(sheet, pictureIndex1, , , , );
InsertPictureToSheet(sheet, pictureIndex2, , , , );
InsertPictureToSheet(sheet, pictureIndex3, , , , ); //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(, , , , StartX, StartY, EndX, EndY);
Picture pict = patriarch.CreatePicture(anchor, pictureIdx);
pict.Resize();
}

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

  1. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  2. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)

    自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...

  3. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续篇)

    上周六我发表的文章<分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility>受到了大家的热烈支持与推荐,再此表示感谢,该ExcelUtility ...

  4. navicat 导入execl失败

    在使用navicat导入execl是遇到了如下图的错误 在更换多个版本的navicat后问题依然如故. 解决办法; 1.打开需要导入的execl 2.安装一个AccessDatabaseEngine_ ...

  5. 如何轻松的把图片导入execl表格中

    在项目中有时候会遇到往数据库中导数据的时候,往往需要把图片也一起导入execl表格中,那怎么才能把图片一块导入至execl中呢?那么今天我们就来看看怎么实现吧! 如何实现?今天我们就来用jxl和poi ...

  6. 基于EPPlus和NPOI实现的Excel导入导出

    基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的 ...

  7. fileupload NPOI导入EXECL数据

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

  8. 基于NPOI的Excel数据导入

    从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...

  9. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility

    1. ExcelUtility功能:  1.将数据导出到EXCEL(支持XLS,XLSX,支持多种类型模板,支持列宽自适应)  类名:ExcelUtility. Export  2.将EXCEL ...

随机推荐

  1. Android代码优化工具——Android lint

    作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常 ...

  2. C++的ORM工具比较

        用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,J ...

  3. tcp为什要三次握手

    准备知识: 单工:信息只能单向传递.发送-->接收,单向,不能返回响应. 双工:指的是信息可双向发送. 全双工:信息可同时双向传递. 半双工:不能同时,单行道,一边传输完了,另一边才能发起传输. ...

  4. 编写高质量JS代码的68个有效方法(十三)

    No.61.不要阻塞I/O事件队列 Tips: 异步API使用回调函数来延缓处理代价高昂的操作以避免阻塞主应用程序 JavaScript并发的接收事件,但会使用一个事件队列按序地处理事件处理程序 在应 ...

  5. 比较HTML元素和Native组件的区别

    我们开发web应用,会使用到各种Html基本元素,比较<div>,<span>,<img>等. 当我们在开发React Native时,我们不能使用HTML元素,但 ...

  6. AVL树(一)之 图文解析 和 C语言的实现

    概要 本章介绍AVL树.和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现.本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++ ...

  7. Android 学习笔记之Volley(七)实现Json数据加载和解析...

    学习内容: 1.使用Volley实现异步加载Json数据...   Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...

  8. C#中引用类型和值类型

    C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型. C#的引用类型包括:数组,用户定义的类.接口.委托,object,字符串. 值类型和引用类型的区别在于,值类型的变 ...

  9. CentOS6.5菜鸟之旅:安装Realtek无线网卡驱动

    一.前言 CentOS6.5不像CentOS7和Unbuntu那样自动安装好了无线网卡驱动,因此需要我们折腾一下. 二.安装前的准备工作   [a] 检查无线网卡驱动的安装情况(通过查看网络接口的安装 ...

  10. 存储过程分页 Ado.Net分页 EF分页 满足90%以上

    存储过程分页: create proc PR_PagerDataByTop @pageIndex int, @pageSize int, @count int out as select top(@p ...