打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#操作Excel类(通用?)
using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Data;  
using System.IO;  
using System.Web;  
using Microsoft.Office.Interop.Excel;  
/* 
* 开发人员:jiede 
* 时间:2009年11月17日 
* 功能:将数据导出Excel  
*  
*/ 
namespace XT.LiTree.Logic  
{  
    public class ExcelExport  
    {  
        /// <summary>  
        /// 直接导出Excel  
        /// </summary>  
        /// <param name="ds">数据源DataSet</param>  
        /// <param name="fileName">保存文件名(例如:E:\a.xls)</param>  
        /// <returns></returns>  
        public bool DoExport(DataSet ds, string fileName)  
        {  
            if (ds.Tables.Count == 0 || fileName == string.Empty)  
            {  
                return false;  
            }  
            application excel = new ApplicationClass();  
            int rowindex = 1;  
            int colindex = 0;  
            Workbook work = excel.Workbooks.Add(true);  
            //Worksheet sheet1 = (Worksheet)work.Worksheets[0];  
            System.Data.DataTable table = ds.Tables[0];  
            foreach (DataColumn col in table.Columns)  
            {  
                colindex++;  
                excel.Cells[1, colindex] = col.ColumnName;  
            }  
            foreach (DataRow row in table.Rows)  
            {  
                rowindex++;  
                colindex = 0;  
                foreach (DataColumn col in table.Columns)  
                {  
                    colindex++;  
                    excel.Cells[rowindex, colindex] = row[col.ColumnName].ToString();  
                }  
            }  
            excel.Visible = false;  
            //((Worksheet)work.Sheets[0]).Name = "sss";  
            excel.ActiveWorkbook.SaveAs(fileName, XlFileFormat.xlExcel9795, null, null, false, false, XlSaveAsaccessMode.xlNoChange, null, null, null, null, null);  
            excel.Quit();  
            excel = null;  
            GC.Collect();  
            return true;  
        }  
        /// <summary>  
        /// 直接导出Excel  
        /// </summary>  
        /// <param name="ds">数据源DataSet</param>  
        /// <param name="columns">列名数组,允许为空(columns=null),为空则表使用默认数据库列名 </param>  
        /// <param name="fileName">保存文件名(例如:E:\a.xls)</param>  
        /// <returns></returns>  
        public bool DoExport(DataSet ds, string[] columns, string fileName)  
        {  
            if (ds.Tables.Count == 0 || fileName == string.Empty)  
            {  
                return false;  
            }  
            Application excel = new ApplicationClass();  
            int rowindex = 1;  
            int colindex = 0;  
            Workbook work = excel.Workbooks.Add(true);  
            //Worksheet sheet1 = (Worksheet)work.Worksheets[0];  
            System.Data.DataTable table = ds.Tables[0];  
            if (columns != null)  
            {  
                for (int i = 0; i < columns.Length; i++)  
                {  
                    colindex++;  
                    if (columns[i] != null && columns[i] != "")  
                    {  
                        excel.Cells[1, colindex] = columns[i];  
                    }  
                    else 
                    {  
                        excel.Cells[1, colindex] = table.Columns[i].ColumnName;  
                    }  
                }  
            }  
            else 
            {  
                foreach (DataColumn col in table.Columns)  
                {  
                    colindex++;  
                    excel.Cells[1, colindex] = col.ColumnName;  
                }  
            }  
            foreach (DataRow row in table.Rows)  
            {  
                rowindex++;  
                colindex = 0;  
                foreach (DataColumn col in table.Columns)  
                {  
                    colindex++;  
                    excel.Cells[rowindex, colindex] = row[col.ColumnName].ToString();  
                }  
            }  
            excel.Visible = false;  
            //((Worksheet)work.Sheets[0]).Name = "sss";  
            excel.ActiveWorkbook.SaveAs(fileName, XlFileFormat.xlExcel9795, null, null, false, false, XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);  
            excel.Quit();  
            excel = null;  
            GC.Collect();  
            return true;  
        }  
                          
        /// <summary>  
        /// 直接导出Excel  
        /// </summary>  
        /// <param name="sql">SQL查询语句</param>  
        /// <param name="columns">列名数组</param>  
        /// <param name="fileName">保存文件名(例如:E:\a.xls)</param>  
        /// <returns></returns>  
        public bool DoExport(string sql, string[] columns, string fileName)  
        {  
            Dao.DataBase db = new XT.LiTree.Dao.DataBase();  
            DataSet ds = db.GetDS(sql);  
            if (ds.Tables.Count == 0 || fileName == string.Empty)  
            {  
                return false;  
            }  
            Application excel = new ApplicationClass();  
            int rowindex = 1;  
            int colindex = 0;  
            Workbook work = excel.Workbooks.Add(true);  
            //Worksheet sheet1 = (Worksheet)work.Worksheets[0];  
            System.Data.DataTable table = ds.Tables[0];  
            if (columns != null)  
            {  
                for (int i = 0; i < columns.Length; i++)  
                {  
                    colindex++;  
                    if (columns[i] != null && columns[i] != "")  
                    {  
                        excel.Cells[1, colindex] = columns[i];  
                    }  
                    else 
                    {  
                        excel.Cells[1, colindex] = table.Columns[i].ColumnName;  
                    }  
                }  
            }  
            else 
            {  
                foreach (DataColumn col in table.Columns)  
                {  
                    colindex++;  
                    excel.Cells[1, colindex] = col.ColumnName;  
                }  
            }  
            foreach (DataRow row in table.Rows)  
            {  
                rowindex++;  
                colindex = 0;  
                foreach (DataColumn col in table.Columns)  
                {  
                    colindex++;  
                    excel.Cells[rowindex, colindex] = row[col.ColumnName].ToString();  
                }  
            }  
            excel.Visible = false;  
            //((Worksheet)work.Sheets[0]).Name = "sss";  
            excel.ActiveWorkbook.SaveAs(fileName, XlFileFormat.xlExcel9795, null, null, false, false, XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);  
            excel.Quit();  
            excel = null;  
            GC.Collect();  
            return true;  
        }  
        /// <summary>  
        /// 通过流导出Excel  
        /// </summary>  
        /// <param name="ds">数据源DataSet</param>  
        /// <param name="fileName">保存文件名(例如:a.xls)</param>  
        /// <returns></returns>  
        public bool StreamExport(DataSet ds, string fileName)  
        {  
            if (ds.Tables.Count == 0 || fileName == string.Empty)  
            {  
                return false;  
            }  
            System.Data.DataTable dt = ds.Tables[0];  
            StringBuilder content = new StringBuilder();  
            StringBuilder strtitle = new StringBuilder();  
            content.Append("<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>");  
            content.Append("<head><title></title><meta http-equiv='Content-Type' content=\"text/html; charset=gb2312\"></head><body><table x:str cellspacing='0' rules='all' border='1' id='title1' style="border-collapse:collapse;" mce_style="border-collapse:collapse;">");  
            content.Append("<tr>");  
            for (int j = 0; j < dt.Columns.Count; j++)  
            {  
                content.Append("<td>" + dt.Columns[j].ColumnName + "</td>");  
            }  
            content.Append("</tr>\n");  
            for (int j = 0; j < dt.Rows.Count; j++)  
            {  
                content.Append("<tr>");  
                for (int k = 0; k < dt.Columns.Count; k++)  
                {  
                    content.Append("<td>" + dt.Rows[j][k].ToString() + "</td>");  
                }  
                content.Append("</tr>\n");  
            }  
            content.Append("</table></body></html>");  
            content.Replace(" ", "");  
            //fileContent = (byte[])System.Text.Encoding.Default.GetBytes(content.ToString());      
            //System.Web.UI.WebControls.  
            System.Web.HttpContext.Current.Response.Clear();  
            System.Web.HttpContext.Current.Response.Buffer = true;  
            System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";  
            System.Web.HttpContext.Current.Response.Charset = "GB2312";  
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");  
            System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);//HttpUtility.UrlEncode(fileName));  
            //            HttpUtility.UrlEncode(fileName,Encoding.UTF8);  
            //System.Web.HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;  
            System.Web.HttpContext.Current.Response.Write(content.ToString());  
            System.Web.HttpContext.Current.Response.End();  
            return true;  
        }  
        /// <summary>  
        /// 通过流导出Excel  
        /// </summary>  
        /// <param name="ds">数据源DataSet</param>  
        /// <param name="columns">列名数组,允许为空(columns=null),为空则表使用默认数据库列名</param>  
        /// <param name="fileName"></param>  
        /// <returns></returns>  
        public bool StreamExport(DataSet ds, string[] columns, string fileName)  
        {  
            if (ds.Tables.Count == 0 || fileName == string.Empty)  
            {  
                return false;  
            }  
            System.Data.DataTable dt = ds.Tables[0];  
            StringBuilder content = new StringBuilder();  
            StringBuilder strtitle = new StringBuilder();  
            content.Append("<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>");  
            content.Append("<head><title></title><meta http-equiv='Content-Type' content=\"text/html; charset=gb2312\"></head><body><table x:str cellspacing='0' rules='all' border='1' id='title1' style="border-collapse:collapse;" mce_style="border-collapse:collapse;">");  
            content.Append("<tr>");  
            if (columns != null)  
            {  
                for (int i = 0; i < columns.Length; i++)  
                {  
                    if (columns[i] != null && columns[i] != "")  
                    {  
                        content.Append("<td>" + columns[i] + "</td>");  
                    }  
                    else 
                    {  
                        content.Append("<td>" + dt.Columns[i].ColumnName + "</td>");  
                    }  
                }  
            }  
            else 
            {  
                for (int j = 0; j < dt.Columns.Count; j++)  
                {  
                    content.Append("<td>" + dt.Columns[j].ColumnName + "</td>");  
                }  
            }  
            content.Append("</tr>\n");  
            for (int j = 0; j < dt.Rows.Count; j++)  
            {  
                content.Append("<tr>");  
                for (int k = 0; k < dt.Columns.Count; k++)  
                {  
                    content.Append("<td>" + dt.Rows[j][k].ToString() + "</td>");  
                }  
                content.Append("</tr>\n");  
            }  
            content.Append("</table></body></html>");  
            content.Replace(" ", "");  
            //fileContent = (byte[])System.Text.Encoding.Default.GetBytes(content.ToString());      
            //System.Web.UI.WebControls.  
            System.Web.HttpContext.Current.Response.Clear();  
            System.Web.HttpContext.Current.Response.Buffer = true;  
            System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";  
            System.Web.HttpContext.Current.Response.Charset = "GB2312";  
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");  
            System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);//HttpUtility.UrlEncode(fileName));  
            //            HttpUtility.UrlEncode(fileName,Encoding.UTF8);  
            //System.Web.HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;  
            System.Web.HttpContext.Current.Response.Write(content.ToString());  
            System.Web.HttpContext.Current.Response.End();  
            return true;  
        }  
        /// <summary>  
        /// 通过流导出Excel  
        /// </summary>  
        /// <param name="ds">数据源DataSet</param>  
        /// <param name="columns">列名数组,允许为空(columns=null),为空则表使用默认数据库列名</param>  
        /// <param name="fileName"></param>  
        /// <returns></returns>  
        public bool StreamExport(string sql, string[] columns, string fileName)  
        {  
            Dao.DataBase db = new XT.LiTree.Dao.DataBase();  
            DataSet ds = db.GetDS(sql);  
            if (ds.Tables.Count == 0 || fileName == string.Empty)  
            {  
                return false;  
            }  
            System.Data.DataTable dt = ds.Tables[0];  
            StringBuilder content = new StringBuilder();  
            StringBuilder strtitle = new StringBuilder();  
            content.Append("<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>");  
            content.Append("<head><title></title><meta http-equiv='Content-Type' content=\"text/html; charset=gb2312\"></head><body><table x:str cellspacing='0' rules='all' border='1' id='title1' style="border-collapse:collapse;" mce_style="border-collapse:collapse;">");  
            content.Append("<tr>");  
            if (columns != null)  
            {  
                for (int i = 0; i < columns.Length; i++)  
                {  
                    if (columns[i] != null && columns[i] != "")  
                    {  
                        content.Append("<td>" + columns[i] + "</td>");  
                    }  
                    else 
                    {  
                        content.Append("<td>" + dt.Columns[i].ColumnName + "</td>");  
                    }  
                }  
            }  
            else 
            {  
                for (int j = 0; j < dt.Columns.Count; j++)  
                {  
                    content.Append("<td>" + dt.Columns[j].ColumnName + "</td>");  
                }  
            }  
            content.Append("</tr>\n");  
            for (int j = 0; j < dt.Rows.Count; j++)  
            {  
                content.Append("<tr>");  
                for (int k = 0; k < dt.Columns.Count; k++)  
                {  
                    content.Append("<td>" + dt.Rows[j][k].ToString() + "</td>");  
                }  
                content.Append("</tr>\n");  
            }  
            content.Append("</table></body></html>");  
            content.Replace(" ", "");  
            //fileContent = (byte[])System.Text.Encoding.Default.GetBytes(content.ToString());      
            //System.Web.UI.WebControls.  
            System.Web.HttpContext.Current.Response.Clear();  
            System.Web.HttpContext.Current.Response.Buffer = true;  
            System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";  
            System.Web.HttpContext.Current.Response.Charset = "GB2312";  
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");  
            System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);//HttpUtility.UrlEncode(fileName));  
            //            HttpUtility.UrlEncode(fileName,Encoding.UTF8);  
            //System.Web.HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;  
            System.Web.HttpContext.Current.Response.Write(content.ToString());  
            System.Web.HttpContext.Current.Response.End();  
            return true;  
        }  
    }  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c#中Excel数据的导入、导出
C#操作EXCEL
C#导入导出Excel通用类(SamWang)
C# VBA 操作EXCEL(转)
c#教程之C#实现GridView导出Excel
CAD二次开发 学习笔记(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服