首页 > 编程语言 >Aspose.Cells实现excel预览

Aspose.Cells实现excel预览

时间:2022-11-24 14:57:20浏览次数:42  
标签:sheet 预览 no webHostEnvironment Cells excel html Aspose


在WEB项目中经常遇到excel文档在线预览的需求,基本的解决思路有以下几大类:excel文档转PDF、excel文档直接转html、后台读取excel数据返回给前端利用Excel效果的表格插件如(HandsonTable)将数据进行展示、部署微软Office Online服务(office web apps)实现在线预览、在线的office预览服务(如谷歌docs、微软officeapps)。

EXCEL转HTML

excel转html可以通过第三方工具openoffice、微软office或者第三方类库如POI/NPOI、aspose.cell等转换为html文件。其中POI组件是开源免费的,Java版本叫POI,C#版本叫NPOI。但是转换的效果不是很好,有多个sheet页面的时候,POI会将所有sheet表格展示在一个网页里面,表格顶部会显示sheet名称,如果sheet很多的话页面会很长,出现滚动条页面样式不是很美观。

aspose.cells是收费组件,支持java、.net、.net core,免费使用时候转换出的html页面会有水印“Evaluation Only. Created with Aspose.Cells”如果excel存在多个sheet,aspose转换出来的网页会带选项卡,点击选项卡会展示对应的sheet页面内容,展示效果比POI转换出的html效果的好。

首先在后台使用aspose读取excel文件并返回转换好的html文件目录返回给前台

private readonly ILogger _logger;
private readonly IWebHostEnvironment _webHostEnvironment;

    public HomeController(ILogger<HomeController> logger, IWebHostEnvironment webHostEnvironment)
    {
        _logger = logger;
        _webHostEnvironment = webHostEnvironment;
    }
    public IActionResult Index()
    {
        return View();
    }

    public IActionResult Privacy()
    {
        return View();
    }

    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
    public IActionResult Error()
    {
        return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
    }
    /// <summary>
    /// 返回html地址
    /// </summary>
    /// <returns></returns>
    public string ExcelToHtml()
    {
        //程序根目录
        string rootpath = _webHostEnvironment.ContentRootPath;
        //程序下webroot根目录
        string webRootPath = _webHostEnvironment.WebRootPath;
        string filepath = webRootPath + "\\excelFile\\test.xlsx";
        //读取模板路径
        Workbook book = new Workbook(filepath);
        //filePath为保存文件的地址,需要服务端底下可以正常访问的路径
        book.Save(webRootPath+ "\\excelFile\\test.html", SaveFormat.Html);
        return  "\\excelFile\\test.html";
    }

前端接收到后台返回的地址进行一个展示

点击查看代码
@{
    ViewData["Title"] = "Home Page";
}
<script type="text/javascript">
    //预览excel
    function ExcelToHtml() {
        $.ajax({
            url: "/Home/ExcelToHtml",
            data: "",
            type: "get",
            async: false,
            success: function (data) {
                debugger
                console.log(data)
                //获得窗口的垂直位置
                var iWidth = 1400;
                var iHeight = 800;
                var iTop = (window.screen.availHeight - 30 - iHeight) / 2;
                //获得窗口的水平位置
                var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;
                window.open(data, '_blank', 'height=' + iHeight + ',innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');
            },error(err)
            {
                debugger
            }
        });
    }
</script>
<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
    <button onclick="ExcelToHtml()">预览excel</button>
</div>

效果如下

标签:sheet,预览,no,webHostEnvironment,Cells,excel,html,Aspose
From: https://www.cnblogs.com/Sqsdhc/p/16921821.html

相关文章

  • 如何通过Java 合并和取消合并 Excel 单元格
    在整理Excel中的数据时,我们不可避免地需要合并和取消合并单元格。同时,如果需要创建跨列或行的标题,我们可以合并Excel单元格以在电子表格中轻松完成此操作。合并单元格......
  • EasyExcel导出/读取多个sheet页数据
    1.导入``List<WriteOffBaseInfo>writeOffBaseInfoList=newArrayList<>();List<WriteOffBaseInfo>writeOffBaseInfoList1=newArrayList<>();......
  • 纯前端根据JSON数据导出excel
     本文是草稿,具体文章内容待完善,如急需实现功能,可以加我好友告诉你vx:programmer-duan配置excel表头    配置字段  ......
  • 如何通过Java应用程序合并和取消合并 Excel 单元格
    在整理Excel中的数据时,我们不可避免地需要合并和取消合并单元格。同时,如果需要创建跨列或行的标题,我们可以合并Excel单元格以在电子表格中轻松完成此操作。合并单元......
  • EasyExcel导入导出
    https://easyexcel.opensource.alibaba.com/docs/current/https://github.com/alibaba/easyexcel源码可以从github下载调试,相对于poi确实好用很多,但是本质上还是使用的po......
  • excel下载,JasperReports输出pdf
    ~~~java/***导出Excel报表*@return*/@RequestMapping("/exportBusinessReport")publicResultexportBusinessReport(HttpServletRequestrequest,HttpServletRespo......
  • Postgres如何导入Excel数据
    打开Execl文件,另存为CSV格式,逗号隔离。删除CSV文件的第一行,只留下有效数据进入postgres,执行copyone_off_coupon(payload,tag,expire_at)from'C:\Users\DELL\Desktop\ldj......
  • vue 项目中,后端返回文件流,导出excel
    之前写过文件流导出excel,这次直接把上次的代码拿过来复制粘贴,但是导出的表格里面没有数据,只显示undefined。这是之前的代码//api接口页面//excel导出接口export......
  • NPOI Excel导入:时间格式2022/5/26导入变成26-5月-2022
    //NPOI导入日期格式处理stringmytime=dateStr.Trim();//dateStr为Excel导入的日期值IFormatProviderculture=newCultureInfo("zh-CN",true);......
  • EsayExcel导出合并单元格(工具类)
    导出合并单元格工具类1.main方法调用publicstaticvoidmain(String[]args){List<GroupExport<ScoreDemo,String>>groupExports=newArrayList<>()......