压缩上传及导出csv文件
#region 压缩
public static void RARsave(string patch, string rarPatch, string rarName)
{
String the_rar;
RegistryKey the_Reg;
Object the_Obj;
String the_Info;
ProcessStartInfo the_StartInfo;
Process the_Process;
try
{
the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\Shell\Open\Command");
the_Obj = the_Reg.GetValue("");
the_rar = the_Obj.ToString();
the_Reg.Close();
the_rar = the_rar.Substring(1, the_rar.Length - 7);
Directory.CreateDirectory(patch);
//命令参数
the_Info = " a " + rarName + " " + patch + " -r"; ;
the_StartInfo = new ProcessStartInfo();
the_StartInfo.FileName = the_rar;
the_StartInfo.Arguments = the_Info;
the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
//打包文件存放目录
the_StartInfo.WorkingDirectory = rarPatch;
the_Process = new Process();
the_Process.StartInfo = the_StartInfo;
the_Process.Start();
the_Process.WaitForExit();
the_Process.Close();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 上传FTP
static string ftpServerIP = ConfigurationManager.AppSettings["FtpServerIP"].ToString();
static string ftpUserID = ConfigurationManager.AppSettings["FtpUserID"].ToString();
static string ftpPassword = ConfigurationManager.AppSettings["FtpPassword"].ToString();
static FtpWebRequest reqFTP;
private static void Connect(String path)//连接ftp
{
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
}
public static void Upload(string filename) //上面的代码实现了从ftp服务器上载文件的功能
{
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
Connect(uri);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.ContentLength = fileInf.Length;
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
FileStream fs = fileInf.OpenRead();
try
{
Stream strm = reqFTP.GetRequestStream();
contentLen = fs.Read(buff, 0, buffLength);
while (contentLen != 0)
{
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
strm.Close();
fs.Close();
}
catch (Exception ex)
{
// MessageBox.Show(ex.Message, "Upload Error");
}
}
#endregion
#region 导出csv
public static void ExportToSvc(System.Data.DataTable dt, string FilePath, string strFileName)
{
if (!Directory.Exists(FilePath))
{
Directory.CreateDirectory(FilePath);
}
if (File.Exists(FilePath + strFileName))
{
File.Delete(FilePath + strFileName);
}
StringBuilder strColu = new StringBuilder();
StringBuilder strValue = new StringBuilder();
int i = 0;
try
{
string Path = FilePath + strFileName;
StreamWriter sw = new StreamWriter(new FileStream(Path, FileMode.CreateNew), Encoding.GetEncoding("GB2312"));
for (i = 0; i <= dt.Columns.Count - 1; i++)
{
strColu.Append(dt.Columns[i].ColumnName);
strColu.Append(",");
}
strColu.Remove(strColu.Length - 1, 1);//移出掉最后一个,字符
sw.WriteLine(strColu);
foreach (DataRow dr in dt.Rows)
{
strValue.Remove(0, strValue.Length);
for (i = 0; i <= dt.Columns.Count - 1; i++)
{
strValue.Append(dr[i].ToString());
strValue.Append(",");
}
strValue.Remove(strValue.Length - 1, 1);
sw.WriteLine(strValue);
}
sw.Close();
}
catch (Exception ex)
{
throw ex;
}
// System.Diagnostics.Process.Start(strPath);
}
#endregion
{
//定义文档类型、字符编码
Response.Clear();
Response.Buffer= true;
Response.Charset="GB2312";
//下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
//filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc .xls .txt .htm
Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
//Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;
// 定义一个输入流
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.RenderControl(oHtmlTextWriter);
//this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
Response.Write(oStringWriter.ToString());
Response.End();
}
/// <summary>
/// 导出文件
/// </summary>
/// <param name="body"></param>
/// <param name="type"></param>
///
public static void ToDocument(System.Web.UI.Control body,string type,string filename)
{
string fileType = "application/ms-excel"; //文件类型
//转换用户输入的type,全部为大写防止选择失败
type = type.ToUpper().Trim();
switch(type)
{
case "EXCEL":
{
filename+=".xls";
fileType = "application/ms-excel";
break;
}
case "WORD":
{
filename+=".doc";
fileType = "application/ms-word";
break;
}
case "JPEG":
{
filename+=".jpeg";
fileType = "image/JPEG";
break;
}
case "GIF":
{
filename+=".gif";
fileType = "image/GIF";
break;
}
case "HTML":
{
filename+=".html";
fileType = "text/HTML";
break;
}
case "CSV":
{
filename+=".csv";
fileType = "application/octet-stream";
break;
}
case "TXT":
{
filename+=".txt";
fileType = "text/plain";
break;
}
}
//清除Response缓存内容
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer= true;
//确定字符的编码格式
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(filename));
HttpContext.Current.Response.ContentType = fileType;
HttpContext.Current.Response.Charset ="GB2312";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.GetEncoding("GB2312");
try
{
body.Page.EnableViewState = false;
}
catch
{}
//表体空间
System.IO.StringWriter swBody = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hwBody = new System.Web.UI.HtmlTextWriter (swBody);
body.RenderControl(hwBody);
//消除乱码特别设定,非常规方法
string strExcel = "" ;
strExcel = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">";
strExcel += hwBody.InnerWriter.ToString();
HttpContext.Current.Response.Write(strExcel);
HttpContext.Current.Response.End();
}