操作EXCEL导出数据报表的类.docx
- 文档编号:11931388
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:16
- 大小:18.84KB
操作EXCEL导出数据报表的类.docx
《操作EXCEL导出数据报表的类.docx》由会员分享,可在线阅读,更多相关《操作EXCEL导出数据报表的类.docx(16页珍藏版)》请在冰豆网上搜索。
操作EXCEL导出数据报表的类
usingSystem;
usingSystem.Diagnostics;
usingSystem.Collections;
usingSystem.Data;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingExcel;
namespaceLTP.Common
{
///
///操作EXCEL导出数据报表的类
///李天平
///2006.4
///
publicclassDataToExcel
{
publicDataToExcel()
{
}
#region操作EXCEL的一个类(需要Excel.dll支持)
privateinttitleColorindex=15;
///
///标题背景色
///
publicintTitleColorIndex
{
set{titleColorindex=value;}
get{returntitleColorindex;}
}
privateDateTimebeforeTime;//Excel启动之前时间
privateDateTimeafterTime;//Excel启动之后时间
#region创建一个Excel示例
///
///创建一个Excel示例
///
publicvoidCreateExcel()
{
Excel.Applicationexcel=newExcel.Application();
excel.Application.Workbooks.Add(true);
excel.Cells[1,1]="第行第列";
excel.Cells[1,2]="第行第列";
excel.Cells[2,1]="第行第列";
excel.Cells[2,2]="第行第列";
excel.Cells[3,1]="第行第列";
excel.Cells[3,2]="第行第列";
//保存
excel.ActiveWorkbook.SaveAs("./tt.xls",XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null,null);
//打开显示
excel.Visible=true;
//excel.Quit();
//excel=null;
//GC.Collect();//垃圾回收
}
#endregion
#region将DataTable的数据导出显示为报表
///
///将DataTable的数据导出显示为报表
///
///
///
///
///
publicstringOutputExcel(System.Data.DataTabledt,stringstrTitle,stringFilePath)
{
beforeTime=DateTime.Now;
Excel.Applicationexcel;
Excel._WorkbookxBk;
Excel._WorksheetxSt;
introwIndex=4;
intcolIndex=1;
excel=newExcel.ApplicationClass();
xBk=excel.Workbooks.Add(true);
xSt=(Excel._Worksheet)xBk.ActiveSheet;
//取得列标题
foreach(DataColumncolindt.Columns)
{
colIndex++;
excel.Cells[4,colIndex]=col.ColumnName;
//设置标题格式为居中对齐
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).Font.Bold=true;
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment=Excel.XlVAlign.xlVAlignCenter;
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).Select();
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).Interior.ColorIndex=titleColorindex;//19;//设置为浅黄色,共计有种
}
//取得表格中的数据
foreach(DataRowrowindt.Rows)
{
rowIndex++;
colIndex=1;
foreach(DataColumncolindt.Columns)
{
colIndex++;
if(col.DataType==System.Type.GetType("System.DateTime"))
{
excel.Cells[rowIndex,colIndex]=(Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment=Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
}
else
if(col.DataType==System.Type.GetType("System.String"))
{
excel.Cells[rowIndex,colIndex]="'"+row[col.ColumnName].ToString();
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment=Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
}
else
{
excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
}
}
}
//加载一个合计行
introwSum=rowIndex+1;
intcolSum=2;
excel.Cells[rowSum,2]="合计";
xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment=Excel.XlHAlign.xlHAlignCenter;
//设置选中的部分的颜色
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();
//xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex=Assistant.GetConfigInt("ColorIndex");//1;//设置为浅黄色,共计有种
//取得整个报表的标题
excel.Cells[2,2]=strTitle;
//设置整个报表的标题格式
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold=true;
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size=22;
//设置报表表格为最适应宽度
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();
//设置整个报表的标题为跨列居中
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment=Excel.XlHAlign.xlHAlignCenterAcrossSelection;
//绘制边框
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle=1;
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight=Excel.XlBorderWeight.xlThick;//设置左边线加粗
xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeTop].Weight=Excel.XlBorderWeight.xlThick;//设置上边线加粗
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight=Excel.XlBorderWeight.xlThick;//设置右边线加粗
xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight=Excel.XlBorderWeight.xlThick;//设置下边线加粗
afterTime=DateTime.Now;
//显示效果
//excel.Visible=true;
//excel.Sheets[0]="sss";
ClearFile(FilePath);
stringfilename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".xls";
excel.ActiveWorkbook.SaveAs(FilePath+filename,Excel.XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null,null);
//wkbNew.SaveAsstrBookName;
//excel.Save(strExcelFileName);
#region结束Excel进程
//需要对Excel的DCOM对象进行配置:
dcomcnfg
//excel.Quit();
//excel=null;
xBk.Close(null,null,null);
excel.Workbooks.Close();
excel.Quit();
//注意:
这里用到的所有Excel对象都要执行这个操作,否则结束不了Excel进程
//if(rng!
=null)
//{
//System.Runtime.InteropServices.Marshal.ReleaseComObject(rng);
//rng=null;
//}
//if(tb!
=null)
//{
//System.Runtime.InteropServices.Marshal.ReleaseComObject(tb);
//tb=null;
//}
if(xSt!
=null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
xSt=null;
}
if(xBk!
=null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
xBk=null;
}
if(excel!
=null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
excel=null;
}
GC.Collect();//垃圾回收
#endregion
returnfilename;
}
#endregion
#regionKillExcel进程
///
///结束Excel进程
///
publicvoidKillExcelProcess()
{
Process[]myProcesses;
DateTimestartTime;
myProcesses=Process.GetProcessesByName("Excel");
//得不到Excel进程ID,暂时只能判断进程启动时间
foreach(ProcessmyProcessinmyProcesses)
{
startTime=myProcess.StartTime;
if(startTime>beforeTime&&startTime { myProcess.Kill(); } } } #endregion #endregion #region将DataTable的数据导出显示为报表(不使用Excel对象,使用COM.Excel) #region使用示例 /*使用示例: *DataSetds=(DataSet)Session["AdBrowseHitDayList"]; stringExcelFolder=Assistant.GetConfigString("ExcelFolder"); stringFilePath=Server.MapPath(".")+"\\"+ExcelFolder+"\\"; //生成列的中文对应表 HashtablenameList=newHashtable(); nameList.Add("ADID","广告编码"); nameList.Add("ADName","广告名称"); nameList.Add("year","年"); nameList.Add("month","月"); nameList.Add("browsum","显示数"); nameList.Add("hitsum","点击数"); nameList.Add("BrowsinglIP","独立IP显示"); nameList.Add("HitsinglIP","独立IP点击"); //利用excel对象 DataToExceldte=newDataToExcel(); stringfilename=""; try { if(ds.Tables[0].Rows.Count>0) { filename=dte.DataExcel(ds.Tables[0],"标题",FilePath,nameList); } } catch { //dte.KillExcelProcess(); } if(filename! ="") { Response.Redirect(ExcelFolder+"\\"+filename,true); } * **/ #endregion /// ///将DataTable的数据导出显示为报表(不使用Excel对象) /// /// /// /// /// /// publicstringDataExcel(System.Data.DataTabledt,stringstrTitle,stringFilePath,HashtablenameList) { COM.Excel.cExcelFileexcel=newCOM.Excel.cExcelFile(); ClearFile(FilePath); stringfilename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".xls"; excel.CreateFile(FilePath+filename); excel.PrintGridLines=false; COM.Excel.cExcelFile.MarginTypesmt1=COM.Excel.cExcelFile.MarginTypes.xlsTopMargin; COM.Excel.cExcelFile.MarginTypesmt2=COM.Excel.cExcelFile.MarginTypes.xlsLeftMargin; COM.Excel.cExcelFile.MarginTypesmt3=COM.Excel.cExcelFile.MarginTypes.xlsRightMargin; COM.Excel.cExcelFile.MarginTypesmt4=COM.Excel.cExcelFile.MarginTypes.xlsBottomMargin; doubleheight=1.5; excel.SetMargin(refmt1,refheight); excel.SetMargin(refmt2,refheight); excel.SetMargin(refmt3,refheight); excel.SetMargin(refmt4,refheight); COM.Excel.cExcelFile.FontFormattingff=COM.Excel.cExcelFile.FontFormatting.xlsNoFormat; stringfont="宋体"; shortfontsize=9; excel.SetFont(reffont,reffontsize,refff); byteb1=1, b2=12; shorts3=12; excel.SetColumnWidth(refb1,refb2,refs3); stringheader="页眉"; stringfooter="页脚"; excel.SetHeader(refheader); excel.SetFooter(reffooter); COM.Excel.cExcelFile.ValueTypesvt=COM.Excel.cExcelFile.ValueTypes.xlsText; COM.Excel.cExcelFile.CellFontcf=COM.Excel.cExcelFile.CellFont.xlsFont0; COM.Excel.cExcelFile.CellAlignmentca=COM.Excel.cExcelFile.CellAlignment.xlsCentreAlign; COM.Excel.cExcelFile.CellHiddenLockedchl=COM.Excel.cExcelFile.CellHiddenLocked.xlsNormal; //报表标题 intcellformat=1; //introwindex=1,colindex=3; //objecttitle=(object)strTitle; //excel.WriteValue(refvt,refcf,refca,refchl,refrowindex,refcolindex,reftitle,ref
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作 EXCEL 导出 数据 报表