导出数据库数据制成Excel和txt
引用ICSharpCode.SharpZipLib.dll
1、编写压缩和解压代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using ICShaepCode.SharpZipLib;
- using ICShaepCode.SharpZipLib.Zip;
- using ICShaepCode.SharpZipLib.Checksums;
- using System.IO;
- namespace CommonHelper
- {
- /// <summary>
- /// 解压缩文件帮助类
- /// </summary>
- class ZipOperateHelper
- {
- /// <summary>
- /// 递归压缩文件夹方法
- /// </summary>
- /// <param name="FolderToZip"></param>
- /// <param name="s"></param>
- /// <param name="ParentFolderName"></param>
- /// <returns></returns>
- 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(FolderZip) + "/"));//加上“/”才会当成是文件夹创建
- s.PutNextEntry(entry);
- s.Plush;
- //先压缩文件,再递归压缩文件夹
- filenames = Directory.GetFiles(FolderToZip);
- foreach (string file in filenames)
- {
- //打开压缩文件
- fs = File.OpenRead(file);
- byte[] buffer = new byte[fs.Length];
- fs.Read(buffer, , 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 = cec.Value;
- s.PutNextEntry(entry);
- s.Write(buffer, , buffer.Length);
- }
- }
- catch (Exception)
- {
- res = false;
- }
- finally
- {
- if (fs != null)
- {
- fs.Close();
- fs = null;
- }
- if (entry != null)
- entry = null;
- GC.Collect();
- GC.Collect();
- }
- folders = Directory.GetDirectories(FolderToZip);
- foreach (string folder in folders)
- {
- if (!ZipFileDictory(folder, s, Path.Combine(ParentFolderName, Path.GetFileName(FolderToZip))))
- return false;
- }
- return res;
- }
- /// <summary>
- /// 压缩目录
- /// </summary>
- /// <param name="FolderToZip">待压缩文件夹,全路径格式</param>
- /// <param name="ZipedFile">压缩后的文件夹名,全路径格式</param>
- /// <param name="Password"></param>
- /// <returns></returns>
- private static bool ZipFileDictory(string FolderToZip, string ZipedFile, String Password)
- {
- bool res;
- if (Directory.Exists(FolderToZip))
- return false;
- ZipOutputStream s = new ZipOutputStream(File.Create(ZipedFile));
- s.SetLevel();
- s.Password = Password;
- res = ZipFileDictory(FolderToZip, s, "");
- s.Finish();
- s.Close();
- return res;
- }
- /// <summary>
- /// 压缩文件
- /// </summary>
- /// <param name="FileToZip">要进行压缩的文件名</param>
- /// <param name="ZipedFile">压缩后产生的压缩文件名</param>
- /// <param name="Password"></param>
- /// <returns></returns>
- private static bool ZipFile(string FileToZip, string ZipedFile, String Password)
- {
- //如果没有找到,则报错
- if (!File.Exists(FileToZip))
- throw new System.IO.FileNotFoundException("指定要压缩的文件:" + FileToZip + "不存在");
- FileStream ZipFile = null;
- ZipOutputStream ZipStream = null;
- ZipEntry ZipEntry = null;
- bool res = true;
- try
- {
- ZipFile = File.OpenRead(FileToZip);
- byte[] buffer = new byte[FileToZip.Length];
- ZipFile.Read(buffer, , FileToZip.Length);
- ZipFile.Close();
- ZipFile = File.Create(ZipedFile);
- ZipStream = new ZipOutputStream(ZipFile);
- ZipStream.Password = Password;
- ZipStream.PutNextEntry(ZipEntry);
- ZipStream.SetLevel();
- ZipStream.Write(buffer, , buffer.Length);
- }
- catch
- {
- res = false;
- }
- finally
- {
- if (ZipEntry != null)
- ZipEntry = null;
- if (ZipStream != null)
- {
- ZipStream.Finish();
- ZipStream.Close();
- }
- if (ZipFile != null)
- {
- ZipFile.Close();
- ZipFile = null;
- }
- GC.Collect();
- GC.Collect();
- }
- return res;
- }
- /// <summary>
- /// 压缩文件和文件夹
- /// </summary>
- /// <param name="FileToZip">待压缩的文件或文件夹,全路径格式</param>
- /// <param name="ZipedFile">压缩后生成的压缩文件名,全路径格式</param>
- /// <param name="Password"></param>
- /// <returns></returns>
- public static bool Zip(String FileToZip, String ZipedFile, String Password)
- {
- if (Directory.Exists(FileToZip))
- return ZipFileDictory(FileToZip, ZipedFile, Password);
- else if (File.Exists(FileToZip))
- return ZipFile(FileToZip, ZipedFile, Password);
- else
- return false;
- }
- /// <summary>
- /// 解压功能(解压压缩文件到指定目录)
- /// </summary>
- /// <param name="FileToUpZip">待压缩文件</param>
- /// <param name="ZipedFolder">指定解压目标目录</param>
- /// <param name="Password"></param>
- public static void UnZip(string FileToUpZip, string ZipedFolder, string Password)
- {
- if (!File.Exists(FileToUpZip))
- return;
- if (!Directory.Exists(ZipedFolder))
- Directory.CreateDirectory(ZipedFolder);
- ZipInputStream s = null;
- ZipEntry theEntry = null;
- string fileName;
- FileStream writer = null;
- try
- {
- s = new ZipInputStream(File.OpenRead(FileToUpZip));
- s.Password = Password;
- while ((theEntry = s.GetNextEntry()) != null)
- {
- if (theEntry.Name != String.Empty)
- {
- fileName = Path.Combine(ZipedFolder, theEntry.Name);
- //判断文件路径是否是文件夹
- if (fileName.EndsWith("/") || fileName.EndsWith("//"))
- {
- Directory.CreateDirectory(FileName);
- continue;
- }
- writer = File.Create(FileName);
- int size = ;
- byte[] data = new byte[];
- while (true)
- {
- size = s.Read(data, , data.Length);
- if (size > )
- writer.Write(data, , size);
- else
- break;
- }
- }
- }
- }
- finally
- {
- if (writer != null)
- {
- writer.Close();
- writer = null;
- }
- if (theEntry != null)
- theEntry = null;
- if (s != null)
- {
- s.Close();
- s = null;
- }
- GC.Collect();
- GC.Collect();
- }
- }
- }
- }
2、导出数据生成Excel(MVC)
- /// <summary>
- /// 生成Excel
- /// </summary>
- /// <returns></returns>
- public FileResult ExportProductInfo()
- {
- List<Aniuge_spu> spuList = ProductBusiness.GetInstance().GetProdutInfo();
- StringBuilder sb = new StringBuilder();
- sb.Append("<table border='1'cellspacing='0' cellpadding='0'>");
- sb.Append("<tr>");
- List<string> list = new List<string> { "编号", "名称", "形状" };
- //第一行
- foreach (var item in list)
- {
- sb.AppendFormat("<td style='font-size:14px;text-align:center;'>{0}</td>", item);
- }
- //获取的参数列表绑定
- foreach (var item in spuList)
- {
- sb.Append("<tr>");
- sb.AppendFormat("<td>{0}</td>", item.Code);
- sb.AppendFormat("<td>{0}</td>", item.Name);
- sb.AppendFormat("<td>{0}</td>", item.Shape);
- sb.Append("</tr>");
- }
- sb.Append("</table>");
- byte[] fileContents = Encoding.Default.GetBytes(sb.ToString());
- //下载
- return File(fileContents, "application/ms-excel", "streams.xls");
- }
3、导出txt格式的说明书
- /// <summary>
- /// 说明书
- /// </summary>
- /// <returns></returns>
- public FileResult ExportPackageInfo()
- {
- List<Aniuge_spu> spuList = ProductBusiness.GetInstance().GetProdutInfo();
- string zipName = DateTime.Now.ToString("yyyyMMddHHmmss");
- string filepath = Server.MapPath("~/upload/PackageInsert") + zipName;
- if (!System.IO.Directory.Exists(filepath))
- System.IO.Directory.CreateDirectory(filepath);
- foreach (var item in spuList)
- {
- FileStream file = new FileStream(filepath + "\\" + item.Code + ".txt", FileMode.Create, FileAccess.Write);
- StreamWriter sw = new StreamWriter(file);
- sw.WriteLine(item.PackageInsert);
- sw.Close();
- fileClose();
- }
- ZipOperateHelper.Zip(filepath, Server.MapPath("~/upload/PackageInsert/") + "\\" + zipName + ".txt", "");
- //下载
- return File(new FileStream(filepath + ".zip", FileMode.Open), "application/octet-stream", Server.UrlEncode(zipName + ".zip"));
- }
导出数据库数据制成Excel和txt的更多相关文章
- java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...
- 配置ODBC DSN数据源,导出数据库数据到Excel过程记录
一.前言 工作中我们可能遇到这样的需要:查询数据库中的信息,并将结果导出到Excel文件.这本来没什么,但数据量比较大时,用PLSQL.toad导出Excel会出现内存不足等情况,使用odbc+Mic ...
- 导出数据库数据到Excel表
后台需要将用户信息数据导入到Excel表中提供给相关人员: 首先查询数据就不多说了: 导入Excel表直接亮代码(采用的是jxl的jar包提供的方法): public static File Impo ...
- 数据库数据用Excel导出的3种方法
将数据库数据用Excel导出主要有3种方法:用Excel.Application接口.用OleDB.用HTML的Tabel标签 方法1——Excel.Application接口: 首先,需要要Exce ...
- PHP导出MySQL数据到Excel文件
PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存 ...
- .NET使用Office Open XML导出大量数据到 Excel
我相信很多人在做项目的都碰到过Excel数据导出的需求,我从最开始使用最原始的HTML拼接(将需要导出的数据拼接成TABLE标签)到后来happy的使用开源的NPOI, EPPlus等开源组件导出EX ...
- Excel导出数据库数据
package com.hxkr.util; import java.io.FileOutputStream; import java.util.ArrayList; import java.util ...
- java导出数据到excel里:直接导出和导出数据库数据
一.直接导出 package com.ij34.util; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
- 数据库数据生成Excel表格(多用在导出数据)
最近在项目开发中遇到这样一个需求,用户聊天模块产品要求记录用户聊天信息,但只保存当天的,每天都要刷新清空数据,但聊天记录要以Excel的形式打印出来,于是就引出了将数据库的数据导出成Excel表格的需 ...
随机推荐
- Android中对日期进行排序
最近在项目中需要将读取的数据按照时间的降序进行排序. 具体的步骤如下: 1.读取数据,存入List中 2.取出数据中的时间戳,由String转换成Date 3.使用冒泡排序对List中元素按照Date ...
- 新建一个mybatis HelloWorld
1.下载mybatis https://github.com/mybatis/mybatis-3/ 没有梯子好像打不开 下载一个最新版本,我这里下载的是mybatis-3.4.1.zip 里面有myb ...
- eclipse项目!*图标含义
一 .项目前面有红色!,表示工程中classpath中指向的包路径错误 解决办法: 右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选 ...
- SPCOMM的一些用法注意
使用串口SPCOMM接收数据的时候0x11和0x13无法接受,从时间间隔上看来可以接收,但是无法显示.网上查错误得: --------------------------------------- ...
- Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat-4
解决办法:vi /xx/database/install/oraparam.ini 找到[Certified Versions] Linux=redhat-3,SuSe-9,redhat-4,后面加上 ...
- ArcGIS Engine 下投影坐标和经纬度坐标的相互转换
ArcGIS Engine 下投影坐标和经纬度坐标的相互转换 投影转经纬度 ); pPoint.Project(pSRF.CreateGeographicCoordinateSystem((int)e ...
- poj 1860 Currency Exchange :bellman-ford
点击打开链接 Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16635 Accept ...
- SparkSQL On Yarn with Hive,操作和访问Hive表
转载自:http://lxw1234.com/archives/2015/08/466.htm 本文将介绍以yarn-cluster模式运行SparkSQL应用程序,访问和操作Hive中的表,这个和在 ...
- [转]Markdown 语法手册
Markdown 是一种轻量级标记语言,能将文本换成有效的XHTML(或者HTML)文档,它的目标是实现易读易写,成为一种适用于网络的书写语言. Markdown 语法简洁明了,易于掌握,所以用它来写 ...
- Flash Air 打包安卓 ane
工具: 1.flash builder 2.adt打包工具 3.数字证书 一. 创建 jar 文件 1. 打开flash builder, 新建一个java 项目. 2.点击项目属性,选择Java构建 ...