展会信息港展会大全

asp.net导出Excel类库代码分享
来源:互联网   发布日期:2016-01-26 10:57:24   浏览:2354次  

导读:这篇文章主要介绍了asp net导出Excel类库代码,有需要的朋友可以参考一下代码如下:using System;using System Collections Generic;using System Reflection;using System Web;using Excel = Microsoft O ...

这篇文章主要介绍了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.Idgroup 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(),"");

}

}

赞助本站

人工智能实验室

相关热词: 导出Excel 类库 asp net

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港