日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

asp.net导出Excel类库

發布時間:2023/12/10 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net导出Excel类库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Web;
using Excel = Microsoft.Office.Interop.Excel;


/// <summary>
///ExcelClass 的摘要說明
/// </summary>
public class ExcelClass
{
??
? ? /// <summary>
? ? /// 構建ExcelClass類
? ? /// </summary>
? ? public ExcelClass()
? ? {
? ? ? ? this.m_objExcel = new Excel.Application();
? ? }
? ? /// <summary>
? ? /// 構建ExcelClass類
? ? /// </summary>
? ? /// <param name="objExcel">Excel.Application</param>
? ? public ExcelClass(Excel.Application objExcel)
? ? {
? ? ? ? this.m_objExcel = objExcel;
? ? }


? ? /// <summary>
? ? /// 列標號
? ? /// </summary>
? ? private string AList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";


? ? /// <summary>
? ? /// 獲取描述區域的字符
? ? /// </summary>
? ? /// <param name="x"></param>
? ? /// <param name="y"></param>
? ? /// <returns></returns>
? ? public string GetAix(int x, int y)
? ? {
? ? ? ? char[] AChars = AList.ToCharArray();
? ? ? ? if (x >= 26) { return ""; }
? ? ? ? string s = "";
? ? ? ? s = s + AChars[x - 1].ToString();
? ? ? ? s = s + y.ToString();
? ? ? ? return s;
? ? }


? ? /// <summary>
? ? /// 給單元格賦值1
? ? /// </summary>
? ? /// <param name="x">行號</param>
? ? /// <param name="y">列號</param>
? ? /// <param name="align">對齊(CENTER、LEFT、RIGHT)</param>
? ? /// <param name="text">值</param>
? ? public void setValue(int y, int x, string align, string text)
? ? {
? ? ? ? Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);
? ? ? ? range.set_Value(miss, text);
? ? ? ? if (align.ToUpper() == "CENTER")
? ? ? ? {
? ? ? ? ? ? range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
? ? ? ? }
? ? ? ? if (align.ToUpper() == "LEFT")
? ? ? ? {
? ? ? ? ? ? range.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
? ? ? ? }
? ? ? ? if (align.ToUpper() == "RIGHT")
? ? ? ? {
? ? ? ? ? ? range.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
? ? ? ? }


? ? }


? ? /// <summary>
? ? /// 給單元格賦值2
? ? /// </summary>
? ? /// <param name="x">行號</param>
? ? /// <param name="y">列號</param>
? ? /// <param name="text">值</param>
? ? public void setValue(int y, int x, string text)
? ? {
? ? ? ? Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);
? ? ? ? range.set_Value(miss, text);
? ? }


? ? /// <summary>
? ? /// 給單元格賦值3
? ? /// </summary>
? ? /// <param name="x">行號</param>
? ? /// <param name="y">列號</param>
? ? /// <param name="text">值</param>
? ? /// <param name="font">字符格式</param>
? ? /// <param name="color">顏色</param>
? ? public void setValue(int y, int x, string text, System.Drawing.Font font, System.Drawing.Color color)
? ? {
? ? ? ? this.setValue(x, y, text);
? ? ? ? Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);
? ? ? ? range.Font.Size = font.Size;
? ? ? ? range.Font.Bold = font.Bold;
? ? ? ? range.Font.Color = color;
? ? ? ? range.Font.Name = font.Name;
? ? ? ? range.Font.Italic = font.Italic;
? ? ? ? range.Font.Underline = font.Underline;
? ? }


? ? /// <summary>
? ? /// 插入新行
? ? /// </summary>
? ? /// <param name="y">模板行號</param>
? ? public void insertRow(int y)
? ? {
? ? ? ? Excel.Range range = sheet.get_Range(GetAix(1, y), GetAix(25, y));
? ? ? ? range.Copy(miss);
? ? ? ? range.Insert(Excel.XlDirection.xlDown, miss);
? ? ? ? range.get_Range(GetAix(1, y), GetAix(25, y));
? ? ? ? range.Select();
? ? ? ? sheet.Paste(miss, miss);


? ? }


? ? /// <summary>
? ? /// 把剪切內容粘貼到當前區域
? ? /// </summary>
? ? public void past()
? ? {
? ? ? ? string s = "a,b,c,d,e,f,g";
? ? ? ? sheet.Paste(sheet.get_Range(this.GetAix(10, 10), miss), s);
? ? }
? ? /// <summary>
? ? /// 設置邊框
? ? /// </summary>
? ? /// <param name="x1"></param>
? ? /// <param name="y1"></param>
? ? /// <param name="x2"></param>
? ? /// <param name="y2"></param>
? ? /// <param name="Width"></param>
? ? public void setBorder(int x1, int y1, int x2, int y2, int Width)
? ? {
? ? ? ? Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), miss);


? ? ? ? ((Excel.Range)range.Cells[x1, y1]).ColumnWidth = Width;
? ? }
? ? public void mergeCell(int x1, int y1, int x2, int y2)
? ? {
? ? ? ? Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2));
? ? ? ? range.Merge(true);
? ? }


? ? public Excel.Range getRange(int x1, int y1, int x2, int y2)
? ? {
? ? ? ? Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2));
? ? ? ? return range;
? ? }


? ? private object miss = Missing.Value; //忽略的參數OLENULL?
? ? private Excel.Application m_objExcel;//Excel應用程序實例?
? ? private Excel.Workbooks m_objBooks;//工作表集合?
? ? private Excel.Workbook m_objBook;//當前操作的工作表?
? ? private Excel.Worksheet sheet;//當前操作的表格


? ? public Excel.Worksheet CurrentSheet
? ? {
? ? ? ? get
? ? ? ? {
? ? ? ? ? ? return sheet;
? ? ? ? }
? ? ? ? set
? ? ? ? {
? ? ? ? ? ? this.sheet = value;
? ? ? ? }
? ? }


? ? public Excel.Workbooks CurrentWorkBooks
? ? {
? ? ? ? get
? ? ? ? {
? ? ? ? ? ? return this.m_objBooks;
? ? ? ? }
? ? ? ? set
? ? ? ? {
? ? ? ? ? ? this.m_objBooks = value;
? ? ? ? }
? ? }


? ? public Excel.Workbook CurrentWorkBook
? ? {
? ? ? ? get
? ? ? ? {
? ? ? ? ? ? return this.m_objBook;
? ? ? ? }
? ? ? ? set
? ? ? ? {
? ? ? ? ? ? this.m_objBook = value;
? ? ? ? }
? ? }


? ? /// <summary>
? ? /// 打開Excel文件
? ? /// </summary>
? ? /// <param name="filename">路徑</param>
? ? public void OpenExcelFile(string filename)
? ? {
? ? ? ? UserControl(false);


? ? ? ? m_objExcel.Workbooks.Open(filename, miss, miss, miss, miss, miss, miss, miss,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?miss, miss, miss, miss, miss, miss, miss);


? ? ? ? m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;


? ? ? ? m_objBook = m_objExcel.ActiveWorkbook;
? ? ? ? sheet = (Excel.Worksheet)m_objBook.ActiveSheet;
? ? }
? ? public void UserControl(bool usercontrol)
? ? {
? ? ? ? if (m_objExcel == null) { return; }
? ? ? ? m_objExcel.UserControl = usercontrol;
? ? ? ? m_objExcel.DisplayAlerts = usercontrol;
? ? ? ? m_objExcel.Visible = usercontrol;
? ? }
? ? public void CreateExceFile()
? ? {
? ? ? ? UserControl(false);
? ? ? ? m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
? ? ? ? m_objBook = (Excel.Workbook)(m_objBooks.Add(miss));
? ? ? ? sheet = (Excel.Worksheet)m_objBook.ActiveSheet;
? ? }
? ? public void SaveAs(string FileName)
? ? {
? ? ? ? ?m_objBook.SaveAs(FileName, miss, miss, miss, miss,
? ? ? ? ?miss, Excel.XlSaveAsAccessMode.xlNoChange,
? ? ? ? ?Excel.XlSaveConflictResolution.xlLocalSessionChanges,
? ? ? ? ?miss, miss, miss, miss);
? ? ? ? //m_objBook.Close(false, miss, miss);?
? ? }
? ? public void ReleaseExcel()
? ? {
? ? ? ? m_objExcel.Quit();
? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objExcel);
? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objBooks);
? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objBook);
? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject((object)sheet);
? ? ? ? m_objExcel = null;
? ? ? ? m_objBooks = null;
? ? ? ? m_objBook = null;
? ? ? ? sheet = null;
? ? ? ? GC.Collect();
? ? }


? ? /
? ? public bool KillAllExcelApp()
? ? {
? ? ? ? try
? ? ? ? {
? ? ? ? ? ? if (m_objExcel != null) // isRunning是判斷xlApp是怎么啟動的flag.
? ? ? ? ? ? {
? ? ? ? ? ? ? ? m_objExcel.Quit();
? ? ? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
? ? ? ? ? ? ? ? //釋放COM組件,其實就是將其引用計數減1
? ? ? ? ? ? ? ? //System.Diagnostics.Process theProc;
? ? ? ? ? ? ? ? foreach (System.Diagnostics.Process theProc in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //先關閉圖形窗口。如果關閉失敗...有的時候在狀態里看不到圖形窗口的excel了,
? ? ? ? ? ? ? ? ? ? //但是在進程里仍然有EXCEL.EXE的進程存在,那么就需要殺掉它:p
? ? ? ? ? ? ? ? ? ? if (theProc.CloseMainWindow() == false)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? theProc.Kill();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? m_objExcel = null;
? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? catch
? ? ? ? {
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? return true;
? ? }
}




? ?/// <summary>
? ? /// 點擊打印按鈕事件
? ? /// </summary>
? ? /// <param name="sender"></param>
? ? /// <param name="e"></param>
? ? protected void Sendbu_Click(object sender, EventArgs e)
? ? {
? ? ? ? try
? ? ? ? { ? ? ? ? ?
? ? ? ? ? ? //查找部門分類用戶
? ? ? ? ? ? DataTable Duser = EduOA.DBUtility.DbHelperSQL.Query("select count(*) as count,d.Id as DId FROM OA_User u,OA_Department d where u.DepartmentID=d.Id ?group by d.Id").Tables[0];


? ? ? ? ? ? ExcelClass Ec = new ExcelClass();//創建Excel操作類對象


? ? ? ? ? ? int Ycount = 1;


? ? ? ? ? ? Ec.CreateExceFile();//創建Excel文件


? ? ? ? ? ? Ec.setValue(Ycount, 1, "CENTER", "組織部門");
? ? ? ? ? ? Ec.setValue(Ycount, 2, "CENTER", "姓名");
? ? ? ? ? ? Ec.setValue(Ycount, 3, "CENTER", "性別");
? ? ? ? ? ? Ec.setValue(Ycount, 4, "CENTER", "職位");
? ? ? ? ? ? Ec.setValue(Ycount, 5, "CENTER", "移動電話");
? ? ? ? ? ? Ec.setValue(Ycount, 6, "CENTER", "電話");
? ? ? ? ? ? Ec.setValue(Ycount, 7, "CENTER", "電子郵箱");


? ? ? ? ? ? Ec.setBorder(1, 1, 1, 1, 50);
? ? ? ? ? ? Ec.setBorder(1, 2, 2, 2, 20);
? ? ? ? ? ? Ec.setBorder(1, 5, 5, 5, 20);
? ? ? ? ? ? Ec.setBorder(1, 6, 6, 6, 20);
? ? ? ? ? ? Ec.setBorder(1, 7, 7, 7, 20);


? ? ? ? ? ? for (int i = 0; i < Duser.Rows.Count; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Ycount += 1;
? ? ? ? ? ? ? ? Ec.setValue(Ycount, 1, "CENTER", Common.DeleteHtml(Getdept(Duser.Rows[i]["count"], Duser.Rows[i]["DId"])));
? ? ? ? ? ? ? ? DataTable dtuser = GetData(Duser.Rows[i]["DId"]);
? ? ? ? ? ? ? ? for (int k = 0; k < dtuser.Rows.Count; k++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Ec.setValue(Ycount, 2, "CENTER", dtuser.Rows[k]["TrueName"].ToString());
? ? ? ? ? ? ? ? ? ? Ec.setValue(Ycount, 3, "CENTER", dtuser.Rows[k]["sex"].ToString());
? ? ? ? ? ? ? ? ? ? Ec.setValue(Ycount, 4, "CENTER", dtuser.Rows[k]["PositionId"].ToString());
? ? ? ? ? ? ? ? ? ? Ec.setValue(Ycount, 5, "CENTER", dtuser.Rows[k]["Telephone"].ToString());
? ? ? ? ? ? ? ? ? ? Ec.setValue(Ycount, 6, "CENTER", dtuser.Rows[k]["Mobile"].ToString());
? ? ? ? ? ? ? ? ? ? Ec.setValue(Ycount, 7, "CENTER", dtuser.Rows[k]["Email"].ToString());
? ? ? ? ? ? ? ? ? ? Ycount += 1;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? string path = Server.MapPath("Contactfiles\\");
? ? ? ? ? ? Ec.SaveAs(path+"通訊錄.xlsx");


? ? ? ? ? ? //*******釋放Excel資源***********
? ? ? ? ? ? Ec.ReleaseExcel();


? ? ? ? ? ? Response.Redirect("Contactfiles/通訊錄.xlsx"); ? ? ? ? ? ?
? ? ? ? }
? ? ? ? catch (Exception ex)
? ? ? ? {
? ? ? ? ? ? PageError("導出出錯!"+ex.ToString(),"");
? ? ? ? }
? ? }





轉載于:https://www.cnblogs.com/riasky/p/3455154.html

總結

以上是生活随笔為你收集整理的asp.net导出Excel类库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。