using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using OfficeOpenXml;
using System.IO;
using EPPlus.Html;
namespace testepplus
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string zpath = Server.MapPath("/") + "test1.xlsx";
FileInfo zfile = new FileInfo(zpath); using (ExcelPackage excel = new ExcelPackage(zfile,"123"))
{
//excel.SaveAs(new FileInfo(Server.MapPath("/") + "test1.xlsx"), "123");
Response.Write(EPPlus.Html.EPPlusExtensions.ToHtml(excel.Workbook.Worksheets[3])); } }
}
}

fx要4.5+ ,需要huget package  epplus ,epplus.html   

可以从https://github.com/fitogram/EPPlus.Html 下载源码更改fx为4.0

epplus.html 0.20版本不支持excel里的图片

修改epplus.html添加支持图片的不成熟的源码

using EPPlus.Html.Converters;
using EPPlus.Html.Html;
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Drawing;
namespace EPPlus.Html
{
public static class EPPlusExtensions
{
public static string ToHtml(this ExcelWorksheet sheet)
{
int lastRow = sheet.Dimension.Rows;
int lastCol = sheet.Dimension.Columns; HtmlElement htmlTable = new HtmlElement("table");
htmlTable.Attributes["cellspacing"] = 0;
htmlTable.Styles["white-space"] = "nowrap"; //render rows
for (int row = 1; row <= lastRow; row++)
{
ExcelRow excelRow = sheet.Row(row); var test = excelRow.Style;
HtmlElement htmlRow = htmlTable.AddChild("tr");
htmlRow.Styles.Update(excelRow.ToCss()); for (int col = 1; col <= lastCol; col++)
{
ExcelRange excelCell = sheet.Cells[row, col];
HtmlElement htmlCell = htmlRow.AddChild("td"); string cc = getPictureCode(row, col, sheet);
if (cc == "")
{
htmlCell.Content = excelCell.Text;
} else
{
htmlCell.Content = cc;
}
htmlCell.Styles.Update(excelCell.ToCss());
}
} return htmlTable.ToString();
} public static string getPictureCode(int row ,int col , ExcelWorksheet sheet)
{
foreach (OfficeOpenXml.Drawing.ExcelDrawing excelDrawing in sheet.Drawings)
{
OfficeOpenXml.Drawing.ExcelPicture excelPicture = excelDrawing as OfficeOpenXml.Drawing.ExcelPicture;
if (excelPicture.From.Column+1==col && excelPicture.From.Row+1 == row){
return "<img src = \"data:image/jpeg;base64," + ImgToBase64String(excelPicture.Image) + "\"/>";
} }
return "";
} public static CssInlineStyles ToCSS(this ExcelStyles styles)
{
throw new NotImplementedException();
} public static string ImgToBase64String(Image image)
{
MemoryStream ms = new MemoryStream();
try
{ image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
return Convert.ToBase64String(arr);
}
catch (Exception ex)
{
return "";
}
finally
{
ms.Close();
}
} } }

  

epplus输出成thml的更多相关文章

  1. 将包含经纬度点位信息的Excel表格数据导入到ArcMap中并输出成shapefile

    将包含经纬信息的Excel表格数据,导入到ArcMap中并输出成shapefile,再进行后面的操作.使用这种方法可以将每一个包含经纬信息的数据在ArcMap中点出来. 一.准备数据 新建Excel表 ...

  2. 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法

    开篇介绍 在 SSIS 中并没有直接提供从数据源到 XML 的转换输出,Destination 的输出对象有 Excel File, Flat File, Database 等,但是并没有直接提供 X ...

  3. js格式化文件大小, 输出成带单位的字符串工具

    /** * 格式化文件大小, 输出成带单位的字符串 * @method formatSize * @grammar formatSize( size ) => String * @grammar ...

  4. Python怎么控制将一个整数输出成指定长的十六进制数?

    使用format方法,在格式控制中进行控制,具体控制参数为: {:#016X} 其中: 大括号表示该处从后面的format的参数中取值 冒号表示格式控制开始 0表示长度不足16位补0 16表示长度 X ...

  5. CAD的输出成高清jpg图片

    打印名称选择JPG或者PNG 然后图纸尺寸选择大的 尺寸不够大就自己设置下 创建新图纸——设置下长宽——然后保存下名字,然后图纸尺寸选择你设置过的这个输出就好了 然后窗口下就好了

  6. 把aspx页面输出成xml的方法注意事项

    先贴代码 Response.Charset = "gb2312"; Response.ContentType = "text/xml"; Response.Co ...

  7. 把sql输出成。sql文件

    作者原创,转载注明出处: 代码: package importfile; import java.io.*; import java.io.PrintWriter; import java.sql.C ...

  8. c# gdi+输出成不同mime类型的图片

    /// <summary> /// 通过图片的mime类型得到相应的编码器 /// </summary> /// <param name="mimeType&q ...

  9. FOR XML PATH 可以将查询结果根据行输出成XML格式

    SELECT CAST(OrderID AS varchar)+',' as OrderNo FROM Product CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型 SELECT C ...

随机推荐

  1. Rational Rose2007无法正常启动解决方式

    安装完Rational Rose发现无法正常启动,我遇到了下面两个问题,希望能帮到同样经历的同学. 问题一: 安装完Rational Rose后不能用,提演示样例如以下:无法启动此程序,由于计算机中丢 ...

  2. C++ 如何快速清空vector以及释放vector内存?

    平时我们在写代码时候,有思考过要主动去释放vector的内存吗? 1.对于数据量不大的vector,没有必要自己主动释放vector,一切都交给操作系统. 2.但是对于大量数据的vector,在vec ...

  3. 基于 Android NDK 的学习之旅----- C调用Java

    许多成熟的C引擎要移植到Android 平台上使用 , 一般都会 提供 一些接口, 让Android sdk 和 jdk 实现. 下文将会介绍 C 如何 通过 JNI 层调用 Java 的静态和非静态 ...

  4. transform、accumulate —— C++ 下的 MapReduce

    accumulate:Map,逐元素分别单独处理: 注:for_each:不改变区间元素的内容,所以更多的是输出打印等功能: accumulate:Reduce,整体化归为一个单独的数值: 两个函数均 ...

  5. AndroidClipSquare安卓实现方形头像裁剪

    安卓实现方形头像裁剪 实现思路.界面可见区域为2层View 最顶层的View是显示层,主要绘制半透明边框区域和白色裁剪区域,代码比較easy. 第二层继承ImageView,使用ImageView的M ...

  6. 小强的HTML5移动开发之路(36)——jQuery中的DOM操作

    1.查询 利用选择器查找节点 使用 html() / text() / attr() 输出节点文本和属性值. 注意:下拉列表使用 val() <html> <head> < ...

  7. web.xml 中的listener、 filter、servlet 加载顺序及其详解(转)

    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...

  8. Oracle数据库零散知识07 -- Materialized view(转)

    物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体 ...

  9. 【U014】热浪(前向星存储方法)

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅 ...

  10. C#7模范和实践

    C# 7 中的模范和实践   原文地址:https://www.infoq.com/articles/Patterns-Practices-CSharp-7 关键点 遵循 .NET Framework ...