使用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 = ; 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的更多相关文章
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)
ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)
自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续篇)
上周六我发表的文章<分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility>受到了大家的热烈支持与推荐,再此表示感谢,该ExcelUtility ...
- navicat 导入execl失败
在使用navicat导入execl是遇到了如下图的错误 在更换多个版本的navicat后问题依然如故. 解决办法; 1.打开需要导入的execl 2.安装一个AccessDatabaseEngine_ ...
- 如何轻松的把图片导入execl表格中
在项目中有时候会遇到往数据库中导数据的时候,往往需要把图片也一起导入execl表格中,那怎么才能把图片一块导入至execl中呢?那么今天我们就来看看怎么实现吧! 如何实现?今天我们就来用jxl和poi ...
- 基于EPPlus和NPOI实现的Excel导入导出
基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的 ...
- fileupload NPOI导入EXECL数据
fileupload JS @section scripts{ <script src="~/Content/js/fileupload/vendor/jquery.ui.widget ...
- 基于NPOI的Excel数据导入
从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility
1. ExcelUtility功能: 1.将数据导出到EXCEL(支持XLS,XLSX,支持多种类型模板,支持列宽自适应) 类名:ExcelUtility. Export 2.将EXCEL ...
随机推荐
- ubuntu安装php mcrypt扩展
1.安装扩展 sudo apt-get install php5-mcrypt 2.添加扩展配置文件 apt-get没有在/etc/php5/cli/conf.d/和/etc/php5/fpm/con ...
- js apply/call/caller/callee/bind使用方法与区别分析
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...
- SPI总线通信电路设计
数据带宽=(总线频率×数据位宽)÷8 B表示带宽,F表示存储器时钟频率,D表示存储器数据总线位数,则带宽为: B(峰值带宽)=F(时钟频率MHz)×D(总线位数bit)/8 例如,PC-100的SDR ...
- protobuf-net
protobuf是google的一个开源项目,可用于以下两种用途: (1)数据的存储(序列化和反序列化),类似于xml.json等: (2)制作网络通信协议. 源代码下载地址:https://gith ...
- Unity 脚本系统
什么是脚本?脚本是一个 MonoBehavior, 继承关系是 MonoBehavior -> Behavior -> Component -> Object GameObject ...
- ruby -- 基础学习(二) 外键配置实现级联删除
该系列学习基于rails4.0 数据表:admins (id, name, address), articles (id, admin_id, title) admin_id 是表articles中的 ...
- 自己动手模拟百分百<select>下拉列表
浏览器默认的下拉确实不好用啊,主要是样式不好修改和统一. (一)下手之前先理清一下<select>的流程: 1.结构:<select> <option value=&qu ...
- js-数据类型
js中有5种数据类型:Undefined.Null.Boolean.Number和String.还有一种复杂的数据类型Object,Object本质是一组无序的名值对组成的. 一.数据类型 1.und ...
- CSS3魔法堂:背景渐变(Gradient)
一.前言 很久之前就了解过CSS3的线性渐变(Linear-Gradient),这段时间决定进一步认知这一特性,以下笔记以便日后查阅. 二.CSS3的各种背景渐变 1. 线性渐变 示例——七彩虹 ...
- 【助教】Java获取数据库数据展示
本文将给出一个最简单的Java查询数据库中一张表的数据并将查询结果展示在页面的例子. 实际上,我们要解决以下两个问题: Java与数据库交互(以JDBC为例) 数据展示在前台页面(以Servlet+J ...