导出数据库数据制成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表格的需 ...
随机推荐
- awk 两列相减
cat http.txt |awk -F ':' '{print($2-$3)}' 百度文库
- CRM SQL 创建活动 ActivityPointer
只是插入的任务,邮件,约会之类的没有研究,以下是官方文档:https://msdn.microsoft.com/zh-cn/library/gg334533.aspx /* 1 实体名 new_xxx ...
- EXt form属性
配置项: success:执行成功后回调的函数,包括两个参数:form和action failure:执行失败后回调的函数,包括两个参数:form和action method:表单的提交方式,有效值包 ...
- [SQL]一组数据中Name列相同值的最大Je与最小je的差
declare @t table(name varchar(),qy varchar(),je int) insert into @t union all union all union all un ...
- List<Object>和List<String>
下面的代码在JAVA中是不可以的: import java.util.*; public class Test { public static void main(String[] args) { L ...
- poj 2406 Power Strings kmp算法
点击打开链接 Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 27368 Accepted: ...
- ASP.Net软件工程师基础(三)
1.多态 答: (1)虚方法 public class Child : Person { public void Speach() { base.Speach(); } public virtual ...
- js中字符串的截取
当需要从一组数据中移除到符合条件的某一个数据的时候,在这种情况下如何进行截取呢? 基本思路: ①将其通过特定的符号,将一组字符串进行拼接,或者用","或者用"+" ...
- 日期:Date
API--- java.util.Date:日期类,月份从0-11: 日期对象和毫秒值之间的转换. 1,日期对象转成毫秒值.Date类中的getTime方法. 2,如何将获取到的毫秒值转成具体的日期呢 ...
- 死锁及oracle死锁--转载
今天看群里在讨论数据库死锁的问题,也一起研究了下,查了些资料在这里总结下. 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. ...