【4.ABP利用NPOI和 ICacheManager导出Excel】

这里写自定义目录标题

背景

项目中需要用到导出Excel数据,按照以前的常规做法都是先在项目里面保存一个Excel模板文件,然后把数据写到这个Excel里面,然后导出。这次采用在内存中动态的生成文件,然后导出。

ICacheManager

ABP 框架自带的ICacheManager 缓存方法,给生成的文件生成一个缓存标记,默认1分钟后清除缓存。本次导出的文件标记则用缓存记录。对每一个生成的文件会创建一个对应的token值。然后根据这个token值来下载文件。

实际操作

1.创建文件缓存帮助类 TempFileCacheManager

    /// <summary>
    /// TempFileCacheManager.
    /// </summary>
    public class TempFileCacheManager : ITempFileCacheManager
    {
   
        /// <summary>
        /// TempFileCacheName.
        /// </summary>
        public const string TempFileCacheName = "TempFileCacheName";

        private readonly ICacheManager _cacheManager;

        /// <summary>
        /// Initializes a new instance of the <see cref="TempFileCacheManager"/> class.
        /// TempFileCacheManager.
        /// </summary>
        /// <param name="cacheManager">cacheManager.</param>
        public TempFileCacheManager(ICacheManager cacheManager)
        {
   
            this._cacheManager = cacheManager;
        }

        /// <summary>
        /// SetFile.
        /// </summary>
        /// <param name="token">名称.</param>
        /// <param name="content">内容.</param>
        public void SetFile(string token, byte[] content)
        {
   
           this._cacheManager.GetCache(TempFileCacheName).Set(token, content, new TimeSpan(0, 0, 1, 0)); // expire time is 1 min by default
        }

        /// <summary>
        /// GetFile.
        /// </summary>
        /// <param name="token">token.</param>
        /// <returns>文件字节流.</returns>
        public byte[] GetFile(string token)
        {
   
            return this._cacheManager.GetCache(TempFileCacheName).Get(token, ep => ep) as byte[];
        }
    }

2.创建TempFileCacheManager的实现接口类 ITempFileCacheManager

 using Abp.Dependency;
 /// <summary>
    /// ITempFileCacheManager.
    /// </summary>
    public interface ITempFileCacheManager : ITransientDependency
    {
   
        /// <summary>
        /// SetFile.
        /// </summary>
        /// <param name="token">名称.</param>
        /// <param name="content">内容.</param>
        void SetFile(string token, byte[] content);

        /// <summary>
        /// GetFile.
        /// </summary>
        /// <param name="token">token.</param>
        /// <returns>文件字节流.</returns>
        byte[] GetFile(string token);
    }

3.这样导出文件的方法就已经完成了,下面是一个具体的示例

     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码写到35岁

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值