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
- Excel文件的上传下载(二)------Aspose使用
- Aspose.Cells 使用整理:读取Excel文件里的数据
- 使用Aspose.Cell控件实现Excel高难度报表的生成(二)
- 使用Aspose.Cell控件实现Excel高难度报表的生成(二)
- 使用Aspose.Cell控件实现Excel高难度报表的生成(二)
- 使用Aspose.Cell控件实现Excel高难度报表的生成(二)
- Excel文件的上传下载(一)
- 使用Aspose.Cells生成Excel的方法详解(转)
- 文件上传下载(二)
- servlet之文件的上传下载(二)
- 使用Aspose读取Excel
- 使用Aspose.Cell控件实现多个Excel文件的合并
- 使用Aspose.Cells组件生成Excel文件实例
- 导入excel(Aspose)
- Aspose.Cells读取excel文件
- 项目开发技巧(四):使用JspSmartupload实现文件上传下载(二):jspSmartUpload上传下载全攻略(ZZ)
- SpringMVC下Excel文件的上传下载实现
- 使用Aspose.Cells生成Excel
- dp与px的转换
- 常用界面交替动画样式以及View动态样式
- impdp卡住,遇到等待事件Streams AQ: enqueue blocked on low memory
- 华为oj输入n个整数,输出其中最小的k个
- 模板方法模式
- Excel文件的上传下载(二)------Aspose使用
- 软件联调
- centos下配置apache用户及用户组权限
- Android Java和JavaScript交互
- 确定当前正在执行耗占资源的SQL语句
- 【iOS】通过URL Scheme启动app(收集了常用的app的URL Scheme)
- 指令的执行方式
- Tiny Tom 的小世界
- Operation on Excel by Python