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. 【转载】linux内核启动android文件系统过程分析

    主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源代码目录介绍Makefile (全局的Makefile)bioni ...

  2. NTKO Officecontrol在线Word编辑器的使用

    1.何时进行手工卸载和安装 一般情况下应该让客户端自动控件,这样当服务器控件版本更新时,客户端可以获得自动升级方面的好处.但是,如果因为客户机配置有问题,或者有其它拦截工具拦截的原因无法自动安装控件, ...

  3. ruby -- 进阶学习(十七)应用代码优化

    ROR开发,代码优化的方法下面这两项是比较重要的: link_to  Rails的link_to是非常慢的,它的代码实现过于复杂,特别是Rails1.2引入了REST以后,大量的命名路由被使用,这些命 ...

  4. CentOS下安装JDK7 转载

    转载地址:http://www.cnblogs.com/rilley/archive/2012/02/02/2335395.html CentOS下安装JDK7 下载地址:http://www.ora ...

  5. UINavigationItem和UItabBarItem的区别详解

    一.UINavigationItem 1> 获得方式 self.navigationItem // self是指控制器 2> 作用 可以用来设置当前控制器顶部导航栏的内容 // 设置导航栏 ...

  6. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

  7. JavaScript 面向对象继承详解

    题记 由于js不像java那样是完全面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,一般都是基于原型链的方式: 一.继承初探 大多数JavaScript的实现用 __proto_ ...

  8. 使用SignalR构建一个最基本的web聊天室

    What is SignalR ASP.NET SignalR is a new library for ASP.NET developers that simplifies the process ...

  9. LeetCode - 30. Substring with Concatenation of All Words

    30. Substring with Concatenation of All Words Problem's Link --------------------------------------- ...

  10. WPF学习之深入浅出话命令

    WPF为我们准备了完善的命令系统,你可能会问:"有了路由事件为什么还需要命令系统呢?".事件的作用是发布.传播一些消息,消息传达到了接收者,事件的指令也就算完成了,至于如何响应事件 ...