zoukankan      html  css  js  c++  java
  • C# Aspose填充excel模板数据,下载

     public Result<object> GetAExcelFieItem(string[] aid, int kind, string contype) {
                string fileUrl = AppDomain.CurrentDomain.BaseDirectory + "\Template\FileItemData.xls";
                Result<object> result = new Result<object>(); 
                try
                {
                    List<Volumes> listvol = Item.Where(w => aid.Any(a => a == w.ID)).OrderBy(o => o.Sort).ToList(); //获取数
                    WorkbookDesigner designer = new WorkbookDesigner();
                    Workbook workbook = new Workbook(fileUrl);
                    Worksheet worksheet = workbook.Worksheets[0];
    
                    Cells cells = worksheet.Cells;
                    Aspose.Cells.Range range = cells.CreateRange("A1", "G19");
                    //打开模板文件,得到WorkBook对象  
                    int allpagecount = 0; 
    
                    listvol = listvol == null ? new List<Volumes>() : listvol;
                    foreach (var vol in listvol)
                    {
                        var vlis = List.Where(p=> p.VolumesID == vol.ID).OrderBy(p=> p.Sort).ToList();
                        int pagecount = vlis.Count / 15 + (vlis.Count % 15 == 0 ? 0 : 1); //当前卷的总页数 
                        for (int j = 1; j <= pagecount; j++)
                        {
                            int startrow = allpagecount * 19;  
                            Aspose.Cells.Range range2 = cells.CreateRange(startrow, 0, startrow+19, 7); 
                            range2.Copy(range);
                            range2.RowHeight = 40;
                            
                            worksheet.Cells[startrow + 1, 2].PutValue(vol.VolumesName);
                            worksheet.Cells[startrow + 1, 5].PutValue(vol.VolumesCode);
                            worksheet.Cells[startrow + 2, 5].PutValue(vol.RetentionPeriod);
                            cells.SetRowHeight(startrow + 1, 31);
                            cells.SetRowHeight(startrow + 2, 31); 
    
                            worksheet.Cells.ClearContents(startrow + 4, 0, startrow + 19, 7);//删除起始单元格到结束单元格数据
                            int pagerow = (j == pagecount && vlis.Count % 15 != 0) ? vlis.Count % 15 : 15;//当前页行数
                            object[,] arr = new object[pagerow, 7];
                            for (int i = 0; i < pagerow; i++)
                            {
                                int index = (j - 1) * 15 + i;//当前行在卷内的序号 
                                worksheet.Cells[startrow + 4 + i, 0].PutValue(vlis[index].Sort);
                                worksheet.Cells[startrow + 4 + i, 1].PutValue(vlis[index].FileCode);
                                worksheet.Cells[startrow + 4 + i, 2].PutValue(vlis[index].Responsible);
                                worksheet.Cells[startrow + 4 + i, 3].PutValue(vlis[index].FileName);
                                worksheet.Cells[startrow + 4 + i, 4].PutValue(vlis[index].FileDate);
                                worksheet.Cells[startrow + 4 + i, 5].PutValue(vlis[index].PageNum);
                                worksheet.Cells[startrow + 4 + i, 6].PutValue(vlis[index].Remark);
                            } 
                            allpagecount++; 
                        }
                    }
                    System.IO.MemoryStream ms = workbook.SaveToStream();//生成数据流
                   
                   //转换成流字节,输出浏览器下载 
                    byte[] ret = ms.GetBuffer();
                    result.Data = ret;
                    result.Message = "目录.xls"; 
                    result.DataCount = 1;
                    //关闭流
                    ms.Close();
                    GC.Collect(); 
                }
                catch (Exception e)
                {
                    result.Flag = false;
                    GC.Collect();
                    if (e.InnerException != null)
                        result.Message = e.InnerException.Message;
                    else
                        result.Message = e.Message;
                }
                return result;
            }
  • 相关阅读:
    static生命周期
    VS2008 JS调试和Silverlight 后台代码调试 相互影响的问题。自己做实例证明
    思考记跳出以往的自己
    javascript setAttribute使用方法 查缺补漏
    克服浮躁,踏实工作,控制自我
    DES加密GUID+文件名称,关于DES加密后文件长度是否超过WINDOWS文件命名规定长度255个字节。
    阅读WPF揭秘前两章探索Silverlight运行的基本原理和RIA工作流程的密码()
    Silverlight运行原理经典问答。
    HTML 实用标签 (你不知道的HTML)
    ASP.NET项目整合 (Silverlight 和 WEB Service ) 过程及原理
  • 原文地址:https://www.cnblogs.com/sxhlf/p/7852368.html
Copyright © 2011-2022 走看看