using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
using System.Web.UI.MobileControls;
using System.Collections.Generic;
using ICSharpCode.SharpZipLib.Checksums;
public partial class FindUser : System.Web.UI.Page
{
    public string Id = "";
    public DBHeple db;
    public string strSQL = "";
    public string Gd = "";
    public System.Data.DataTable dtUser;
    public List<System.IO.FileInfo> lstFile = new List<System.IO.FileInfo>();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(Request["Id"]) && !string.IsNullOrEmpty(Request["Gd"]))
        {
            Id = Request["Id"];
            db = new DBHeple("eu" + Id.Substring(0, 5));
            Gd = Request["Gd"];
            if (Gd.Substring(9) == "000")
            {
                strSQL = "select cd as 易阳指号码 from user" + Id + " where usertype>=0 and usertype<10 and bGroupFlag=1";
            }
            else if (Gd.Substring(0) == "001")
            {
                strSQL = "select cd as 易阳指号码 from user" + Id + " where usertype>=10 and usertype<20 or usertype is null and bGroupFlag=true";
            }
            else
            {
                strSQL = "select cd as 易阳指号码 from user" + Id + " where Cd in (select cd from groupclient where gd=" + Gd + ")";
            }
            dtUser = db.GetRecord(strSQL);
            if (!IsPostBack)
            {
                GetName(Gd);
                Pager();
                BinData();
                //ViewState["back"] = Request.UrlReferrer.ToString();
            }
         //Response.Write(anpExcel.PageCount);
        }
    }
    #region 数据的显示
    /// <summary>
    /// 分页
    /// </summary>
    public void Pager()
    {
        anpExcel.AlwaysShow = true;
        anpExcel.RecordCount = db.GetRecord(strSQL).Rows.Count;
        anpExcel.DataBind();
        anpGroup.AlwaysShow = true;
        anpGroup.RecordCount = db.GetRecord(strSQL).Rows.Count;
        anpGroup.DataBind();
    }
    /// <summary>
    /// 加载数据
    /// </summary>
    public void BinData()
    {
        SqlDataAdapter apter = new SqlDataAdapter(strSQL, DBHeple.Conntion);
        DataSet ds = new DataSet();
        apter.Fill(ds, anpGroup.PageSize * (anpGroup.CurrentPageIndex - 1), anpGroup.PageSize, "dt");
        dlGroup.DataSource = ds.Tables["dt"];
        dlGroup.DataBind();
    }
    protected void lbtnBack_Click(object sender, EventArgs e)
    {
        Response.Redirect("GroupUserFind.aspx?Id=" + Id);
    }
    protected void anpGroup_PageChanged(object sender, EventArgs e)
    {
        BinData();
    }
    /// <summary>
    /// 获取群组名称
    /// </summary>
    /// <param name="value"></param>
    public void GetName(string value)
    {
        string sql = "select * from [group] where gd=" + Gd;
        DataRow dr = db.GetRow(sql);
        if (dr != null)
        {
            lblName.Text = dr["name"].ToString();
        }
    }
    #endregion
    #region 导出Excel
    public static void DataTable2Excel(System.Data.DataTable dtData)
    {
        System.Web.UI.WebControls.DataGrid dgExport = null;
        // 当前对话
        System.Web.HttpContext curContext = System.Web.HttpContext.Current;
        // IO用于导出并返回excel文件
        System.IO.StringWriter strWriter = null;
        System.Web.UI.HtmlTextWriter htmlWriter = null;
        if (dtData != null)
        {
            // 设置编码和附件格式
            curContext.Response.ContentType = "application/vnd.ms-excel";
            curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
            curContext.Response.Charset = "";
            // 导出excel文件
            strWriter = new System.IO.StringWriter();
            htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
            // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
            dgExport = new System.Web.UI.WebControls.DataGrid();
            dgExport.DataSource = dtData.DefaultView;
            dgExport.AllowPaging = false;
            dgExport.DataBind();
            // 返回客户端
            dgExport.RenderControl(htmlWriter);
            curContext.Response.Write(strWriter.ToString());
            curContext.Response.End();
        }
    }
    /// <summary>
    /// 导出Excel
    /// </summary>
    /// <param name="dt"></param>
    public void ExportToExcel(System.Data.DataTable dt)
    {
       
        if (dt != null)
        {
           Microsoft.Office.Interop.Excel.Application xlApp = new ApplicationClass();
            if (xlApp == null)
            {
                //throw new Exception("无法创建Excel对象,可能你的电脑未安装Excel");
                MessageBox.Show("无法创建Excel对象,可能你的电脑未安装Excel");
                return;
            }
            Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
            Microsoft.Office.Interop.Excel.Workbook wordbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)wordbook.Worksheets[1];
            Microsoft.Office.Interop.Excel.Range range = null;
            long lotalCount = dt.Rows.Count;   //总条数
            long rowRead = 0;
            float percent = 0;
            int count = 5000;
            //写入标题
            int page=anpGroup.PageCount;   //记录总页数
            string type = "";
            string path = Server.MapPath("XMLFiles/EduceWordFiles/");
            for (int m = 1; m <= page; m++)
            {
                //System.Data.DataTable dtExcelOne;
                //PagedDataSource pd = new PagedDataSource();
                //pd.DataSource = db.GetRecord(strSQL).DefaultView;
                //pd.AllowPaging = true;
                //pd.CurrentPageIndex = m-1;
                //pd.PageSize = anpGroup.PageSize;
                anpGroup.CurrentPageIndex = m;
                //dlGroup.DataSource = pd;
                BinData();
                //dtExcelOne = pd;
                    worksheet.Cells[1, 1] = "易阳指号码";  // dtExcelOne.Columns[i].ColumnName;
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 1];
                    //range.Interior.ColorIndex = 15;  //背景颜色
                    // range.Font.Bold = true;  //粗体
                    range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
                    //边框
                    //range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous,Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin,Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic,null);
                    //range.ColumnWidth = 4.63; //设置列宽
                    range.EntireColumn.AutoFit();  //自动调整列宽
                    range.EntireRow.AutoFit();  //自动调整行高
                //写入内容
                //for (int r = 0; r <dlGroup.Items.Count ; r++)
                //{
                    for (int j = 0; j < dlGroup.Items.Count; j++)
                    {
                       // worksheet.Rows[j+2,j+1]=(dlGroup.Items[j].FindControl("lblCd") as System.Web.UI.WebControls.Label).Text.ToString();
                        worksheet.Cells[j + 2,1] = (dlGroup.Items[j].FindControl("lblCd") as System.Web.UI.WebControls.Label).Text.ToString();  //dtExcelOne.Rows[r][j];
                        range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[j + 2,1];
                        range.Font.Size = 9;  //字体大小
                        //range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous,Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin,Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic,null);
                        range.EntireColumn.AutoFit();  //自动调整列宽
                    //}
                    rowRead++;
                    percent = ((float)(100 * rowRead)) / lotalCount;
                    System.Windows.Forms.Application.DoEvents();
                }
                range.Borders[XlBordersIndex.xlInsideHorizontal].Weight = XlBorderWeight.xlThin;
                if (dlGroup.Items.Count > 1)
                {
                    range.Borders[XlBordersIndex.xlInsideVertical].Weight = XlBorderWeight.xlThin;
                }
                try
                {
                    
                    if (page > 2)
                    {
                        if (m == 1)
                        {
                            type = "A";
                        }
                        else if (m == 2) { type = "B"; } else if (m == 3) { type = "C"; } else { type = "D"; }
                    }
                    else { type = ""; }
                    worksheet.Name = "成员";
                    wordbook.Saved = true;
                    if (Directory.Exists(path))
                    {
                        wordbook.SaveCopyAs(System.Web.HttpRuntime.AppDomainAppPath + "XMLFiles\\EduceWordFiles\\" + Id + type + ".xls");
                    }
                    else 
                    {
                        Directory.CreateDirectory(path);
                        wordbook.SaveCopyAs(System.Web.HttpRuntime.AppDomainAppPath + "XMLFiles\\EduceWordFiles\\" + Id + type + ".xls");
                    }
                   
                }
                catch (Exception ex)
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "", "alert('导出文件是出错,文件可能正被打开!" + ex.ToString() + "');", true);
                    //throw;
                }
            }
           
            //*************下载*************
           
            if (page >= 2)
            {
                string pa = Server.MapPath("Data/" + Id + ".zip");
                string pathDa=Server.MapPath("Data/");
                // UnpackFiles(name, pa);
                //zipFile(path, Id + ".rar");
                ZipDir(path,pathDa,2,Id);
                System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath("Data/"+Id+".zip"));
                Response.Clear();
                Response.Charset = "GB2312";
                Response.ContentEncoding = System.Text.Encoding.UTF8;
                //下载文件默认文件名
                Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Id+".zip"));
                //添加头信息,指定文件大小,让浏览器能显示下载进度
                Response.AddHeader("Content-Length", file.Length.ToString());
                Response.ContentType = "application/rar";
                //把文件发送该客户段
                Response.WriteFile(file.FullName);
            }
            else
            {
                System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath("XMLFiles\\EduceWordFiles\\" + Id +".xls"));
                Response.Clear();
                Response.Charset = "GB2312";
                Response.ContentEncoding = System.Text.Encoding.UTF8;
                //下载文件默认文件名
                Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Id + ".xls"));
                //添加头信息,指定文件大小,让浏览器能显示下载进度
                Response.AddHeader("Content-Length", file.Length.ToString());
                Response.ContentType = "application/ms-excel";
                //把文件发送该客户段
                Response.WriteFile(file.FullName);
            }
            Response.Flush();
            Response.Clear();
            //停止页面执行
            //Response.End();
            //*********下载后删除文件********
            string pathDel = Server.MapPath("XMLFiles/EduceWordFiles");
            string Delpath = Server.MapPath("Data/");
            if (Directory.Exists(pathDel))
            {
                foreach (string d in Directory.GetFileSystemEntries(pathDel))
                {
                    if (File.Exists(d))
                    { File.Delete(d); }
                    else
                    {
                    }
                    // DeleteFolder();
                }
                Directory.Delete(path, true);
            }
            if (Directory.Exists(Delpath))
            {
                foreach (string d in Directory.GetFileSystemEntries(Delpath))
                {
                    if (File.Exists(d))
                    { File.Delete(d); }
                    else
                    {
                    }
                    // DeleteFolder();
                }
                Directory.Delete(path, true);
            }
            xlApp.Quit();
            GC.Collect();    //强行销毁
            // System.Web.HttpRuntime.AppDomainAppPath + "XMLFiles\\EduceWordFiles\\" + this.Context.User.Identity.Name;+".xls"
        }
    }
    /// <summary>
    /// 单击导入到Excel
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void lblExcel_Click(object sender, EventArgs e)
    {
        //DataTable2Excel(dtUser);
        ExportToExcel(dtUser);
    }
    /// <summary>
    /// 解压
    /// </summary>
    /// <param name="file">压缩文件的名称,如:C:\123\123.zip</param>
    /// <param name="dir">dir要解压的文件夹路径</param>
    /// <returns></returns>
    public static bool UnpackFiles(string file, string dir) 
    {
        try
        {
            if (!File.Exists(file)) 
            {
                return false;
            }
            dir = dir.Replace("/","\\");
            if (!dir.EndsWith("\\")) { dir += "\\"; }
            if (!Directory.Exists(dir)) 
            {
                Directory.CreateDirectory(dir);
            }
            ZipInputStream s = new ZipInputStream(File.OpenRead(file));
            ZipEntry theEntry;
            while ((theEntry=s.GetNextEntry())!=null)
            {
                string directoryName = Path.GetDirectoryName(theEntry.Name);
                string fileName = Path.GetFileName(theEntry.Name);
                if (directoryName != String.Empty) 
                {
                    Directory.CreateDirectory(dir+directoryName);
                }
                if (fileName != String.Empty)
                {
                    FileStream streamWriter = File.Create(dir + theEntry.Name);
                    int size = 2048;
                    byte[] data = new byte[2048];
                    while (true)
                    {
                        size = s.Read(data, 0, data.Length);
                        if (size > 0)
                        {
                            streamWriter.Write(data, 0, size);
                        }
                        else 
                        {
                            break;
                        }
                    }
                    streamWriter.Close();
                }
            }
            s.Close();
            return true;
        }
        catch (Exception ex)
        {
            return false;
            
        }
    }
    /// <summary>
    /// 压缩文件夹
    /// </summary>
    /// <param name="DirToZip">文件夹路径</param>
    /// <param name="ZipedFile">输出文件路径</param>
    /// <param name="CompressionLevel">设置缓存大小</param>
    ///<param name="fileName">压缩后的文件名称</param>
    public static void ZipDir(string DirToZip, string ZipedFile, int CompressionLevel,string fileName)
    {
        //压缩文件为空时默认与压缩文件夹同一级目录   
        FindUser fu = new FindUser();
        if (ZipedFile == string.Empty)
        {
            ZipedFile = DirToZip.Substring(DirToZip.LastIndexOf("\\") + 1);
            ZipedFile = DirToZip.Substring(0, DirToZip.LastIndexOf("\\")) + "\\" + ZipedFile + ".zip";
        }
        if (System.IO.Path.GetExtension(ZipedFile) != ".zip")
        {
            ZipedFile = ZipedFile +fileName+ ".zip";
        }
        using (ZipOutputStream zipoutputstream = new ZipOutputStream(System.IO.File.Create(ZipedFile)))
        {
            zipoutputstream.SetLevel(CompressionLevel);
            Crc32 crc = new Crc32();
            System.IO.DirectoryInfo myDir = new DirectoryInfo(DirToZip);
            List<DictionaryEntry> fileList = GetAllFiles(DirToZip);
            foreach (DictionaryEntry item in fileList)
            {
                System.IO.FileStream fs = System.IO.File.OpenRead(item.Key.ToString());
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                ZipEntry entry = new ZipEntry(item.Key.ToString().Substring(DirToZip.Length + 1));
                entry.DateTime = (DateTime)item.Value;
                entry.Size = fs.Length;
                fs.Close();
                crc.Reset();
                crc.Update(buffer);
                entry.Crc = crc.Value;
                zipoutputstream.PutNextEntry(entry);
                zipoutputstream.Write(buffer, 0, buffer.Length);
            }
        }
    }
    private static List<DictionaryEntry> GetAllFile(string DirToZip)
    {
        throw new NotImplementedException();
    }
    /// <summary>
    /// 下载附件
    /// </summary>
    /// <param name="fileName">附件名称</param>
    /// <param name="path">附件所在的路径(虚拟)</param>
    public static void DownLoadFile(string fileName, string path)
    {
        byte[] buffer = new Byte[10000];
        System.IO.FileInfo fileInfo = new System.IO.FileInfo(path);
        if (fileInfo.Exists)
        {
            HttpContext.Current.Response.Clear();
            System.IO.FileStream iStream = System.IO.File.OpenRead(path);
            long dataLengthToRead = iStream.Length;//获取下载的文件总大小
            HttpContext.Current.Response.ContentType = "application/octet-stream";
            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
            while (dataLengthToRead > 0 && HttpContext.Current.Response.IsClientConnected)
            {
                int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(10000));//读取的大小
                HttpContext.Current.Response.OutputStream.Write(buffer, 0, lengthRead);
                HttpContext.Current.Response.Flush();
                dataLengthToRead = dataLengthToRead - lengthRead;
            }
            HttpContext.Current.Response.Close();
        }
    }
    /// <summary>   
    /// 获取所有文件   
    /// </summary>   
    /// <returns></returns>   
    private static List<DictionaryEntry> GetAllFiles(string dir)
    {
        List<DictionaryEntry> dictonary = new List<DictionaryEntry>();
        if (!System.IO.Directory.Exists(dir))
        {
            return dictonary;
        }
        else
        {
            System.IO.DirectoryInfo root = new System.IO.DirectoryInfo(dir);
            System.IO.FileSystemInfo[] arrary = root.GetFileSystemInfos();
            for (int i = 0; i < arrary.Length; i++)
            {
                dictonary.Add(new DictionaryEntry(arrary[i].FullName, arrary[i].LastWriteTime));
            }
        }
        return dictonary;
    }
    #endregion
}
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()