Excel文件的上传下载(二)------Aspose使用

来源:互联网 发布:java开发在太原多少钱 编辑:程序博客网 时间:2024/06/05 19:24

本篇文章采用的是一个单元格一个单元格写Excel 的方式。

    首先添加引用:一个是在写Excel的过程中添加的引用using Aspose.Cells;还有一个是在压缩的过程中添加的引用using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;

                    ExcelName = string.Empty;                    ExcelName = orgid[i].ID + "-" + orgid[i].NAME + ".xlsx";//工作簿的名称                    Worksheet sheet;                    for (int ww = 0; ww < dsdoc.Tables.Count; ww++)                    {                        dt = dsdoc.Tables[ww];                        if (ww == 0)                        {                            book[i].Worksheets.Clear();                        }                        DataTable docdt = scd.selectnameandidofdoc(int.Parse(dsdoc.Tables[ww].Rows[1][1].ToString()));                        sheet = book[i].Worksheets.Add(docdt.Rows[0][0].ToString() + "-" + docdt.Rows[0][1].ToString());//第一个工作表的名称                        sheet.Cells.SetRowHeight(0, 50);                        sheet.Cells.SetColumnWidth(0, 8);//                        sheet.Cells.SetColumnWidth(1, 20);//                        style = new Aspose.Cells.Style();                        style.Font.Size = 12;                        style.Font.Name = "宋体";                        style.Font.IsBold = true;                        style.HorizontalAlignment = TextAlignmentType.Center;                        style.VerticalAlignment = TextAlignmentType.Center;                        style.IsTextWrapped = true;                        for (int j = 1; j <= dt.Rows.Count; j++)                        {                            sheet.Cells[0, j].SetStyle(style);                            sheet.Cells.SetColumnWidth(1 + j, 15);                        }                        for (int r = 0; r < dsdoc.Tables[ww].Rows.Count; r++)                        {                            sheet.Cells[0, r + 1].PutValue(dsdoc.Tables[ww].Rows[r][0]);                        }                        DateTime dtNowmore = DateTime.Today;                        int daysinmore = dtNowmore.AddDays(1 - dtNowmore.Day).AddMonths(2).AddDays(-1).Day;                        style = new Aspose.Cells.Style();                        style.Font.Size = 10;                        style.Font.Name = "宋体";                        style.HorizontalAlignment = TextAlignmentType.Center;                        style.VerticalAlignment = TextAlignmentType.Center;                        style.IsTextWrapped = true;                        sheet.Cells.SetColumnWidth(0, 20);                        DateTime strlastMouthfirstDay2;                        strlastMouthfirstDay2 = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1);                        for (int r = 0; r < daysinmore; r++)                        {                            strlastMouthfirstDay2 = strlastMouthfirstDay2.AddDays(1);                            string mmmmm = strlastMouthfirstDay2.ToString("yyyy-MM-dd  (dddd)");                            sheet.Cells[r + 1, 0].PutValue(mmmmm);                            sheet.Cells[r + 1, 0].SetStyle(style);                        }                        for (int s = 0; s < dsdoc.Tables[ww].Rows.Count; s++)                        {                            for (int w = 0; w < daysinmore; w++)                            {                                sheet.Cells[w + 1, s + 1].PutValue(0);                            }                        }                    #endregion                    }                    if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + @"Excel\" + strcityname))                    {                        Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"\Excel\" + strcityname);                    }                   book[i].Save( AppDomain.CurrentDomain.BaseDirectory + @"\Excel\" + strcityname+ "\\" + ExcelName);

对导出文件进行压缩

 //添加将文件压缩    private static bool ZipFileDictory(string FolderToZip, string ZipedFile, int level)    {        //AppDomain.CurrentDomain.BaseDirectory + @"\ExcelSCH\" + strcityname        if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + @"\ExcelSCH\"))        {            Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"\ExcelSCH\");            bool res;            if (!Directory.Exists(FolderToZip))            {                return false;            }            ZipOutputStream s = new ZipOutputStream(File.Create(ZipedFile));            s.SetLevel(level);            res = ZipFileDictory(FolderToZip, s, "");            s.Finish();            s.Close();            return res;        }        else        {            bool res;            if (!Directory.Exists(FolderToZip))            {                return false;            }            ZipOutputStream s = new ZipOutputStream(File.Create(ZipedFile));            s.SetLevel(level);            res = ZipFileDictory(FolderToZip, s, "");            s.Finish();            s.Close();            return res;        }    }
</pre><pre name="code" class="csharp">
    private static bool ZipFileDictory(string FolderToZip, ZipOutputStream s, string ParentFolderName)    {        bool res = true;        string[] folders, filenames;        ZipEntry entry = null;        FileStream fs = null;        Crc32 crc = new Crc32();        try        {            //创建当前文件夹            entry = new ZipEntry(Path.Combine(ParentFolderName, Path.GetFileName(FolderToZip) + "/")); //加上 “/” 才会当成是文件夹创建            s.PutNextEntry(entry);            s.Flush();            //先压缩文件,再递归压缩文件夹            filenames = Directory.GetFiles(FolderToZip);            foreach (string file in filenames)            {                //打开压缩文件                fs = File.OpenRead(file);                byte[] buffer = new byte[fs.Length];                fs.Read(buffer, 0, buffer.Length);                entry = new ZipEntry(Path.Combine(ParentFolderName, Path.GetFileName(FolderToZip) + "/" + Path.GetFileName(file)));                entry.DateTime = DateTime.Now;                entry.Size = fs.Length;                fs.Close();                crc.Reset();                crc.Update(buffer);                entry.Crc = crc.Value;                s.PutNextEntry(entry);                s.Write(buffer, 0, buffer.Length);            }        }        catch        {            res = false;        }        finally        {            if (fs != null)            {                fs.Close();                fs = null;            }            if (entry != null)            {                entry = null;            }            GC.Collect();            GC.Collect(1);        }        folders = Directory.GetDirectories(FolderToZip);        foreach (string folder in folders)        {            if (!ZipFileDictory(folder, s, Path.Combine(ParentFolderName, Path.GetFileName(FolderToZip))))            {                return false;            }        }        return res;    }    //调用的文件压缩    private void zipfirst(string strcityname)    {        if (ZipFileDictory(AppDomain.CurrentDomain.BaseDirectory + @"\ExcelSCH\" + strcityname,               AppDomain.CurrentDomain.BaseDirectory + @"\ExcelSCH\" + strcityname + ".rar", 9))         {            string filename = AppDomain.CurrentDomain.BaseDirectory + @"\ExcelSCH\" + strcityname + ".rar";//获取用户选择的文件输出名称            FileInfo file = new FileInfo(filename);//创建一个文件对象            Response.Clear();//清除所有缓存区的内容            Response.Charset = "GB2312";//定义输出字符集            Response.ContentEncoding = Encoding.Default;//输出内容的编码为默认编码            Response.AddHeader("Content-Disposition", "attachment;filename=" + file.Name);//添加头信息。为“文件下载/另存为”指定默认文件名称            Response.AddHeader("Content-Length", file.Length.ToString());//添加头文件,指定文件的大小,让浏览器显示文件下载的速度            Response.WriteFile(file.FullName);// 把文件流发送到客户端                      //File.Delete(AppDomain.CurrentDomain.BaseDirectory + @"\ExcelSCH\" + strcityname);            //File.Delete(AppDomain.CurrentDomain.BaseDirectory + @"\ExcelSCH\" + strcityname + ".rar");            Response.End();//将当前所有缓冲区的输出内容发送到客户端,并停止页面的执行                   }    }

几乎就可以完成整个的文件压缩、下载功能。

0 0
原创粉丝点击