C#EXCEL 操作类--C#DataToExcel帮助类
using System;
using System.Diagnostics;
//using Excel;
namespace DotNet.Utilities
{
/// <summary>
/// 操作EXCEL导出数据报表的类
/// </summary>
public class DataToExcel
{
public DataToExcel()
{
}
#region 操作EXCEL的一个类(需要Excel.dll支持)
private int titleColorindex = 15;
/// <summary>
/// 标题背景色
/// </summary>
public int TitleColorIndex
{
set { titleColorindex = value; }
get { return titleColorindex; }
}
private DateTime beforeTime; //Excel启动之前时间
private DateTime afterTime; //Excel启动之后时间
#region 创建一个Excel示例
/// <summary>
/// 创建一个Excel示例
/// </summary>
public void CreateExcel()
{
//Excel.Application excel = new Excel.Application();
//excel.Application.Workbooks.Add(true);
//excel.Cells[1, 1] = "第1行第1列";
//excel.Cells[1, 2] = "第1行第2列";
//excel.Cells[2, 1] = "第2行第1列";
//excel.Cells[2, 2] = "第2行第2列";
//excel.Cells[3, 1] = "第3行第1列";
//excel.Cells[3, 2] = "第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的数据导出显示为报表
/// <summary>
/// 将DataTable的数据导出显示为报表
/// </summary>
/// <param name="dt">要导出的数据</param>
/// <param name="strTitle">导出报表的标题</param>
/// <param name="FilePath">保存文件的路径</param>
/// <returns></returns>
//public string OutputExcel(System.Data.DataTable dt, string strTitle, string FilePath)
//{
// beforeTime = DateTime.Now;
// Excel.Application excel;
// Excel._Workbook xBk;
// Excel._Worksheet xSt;
// int rowIndex = 4;
// int colIndex = 1;
// excel = new Excel.ApplicationClass();
// xBk = excel.Workbooks.Add(true);
// xSt = (Excel._Worksheet)xBk.ActiveSheet;
// //取得列标题
// foreach (DataColumn col in dt.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;//设置为浅黄色,共计有56种
// }
// //取得表格中的数据
// foreach (DataRow row in dt.Rows)
// {
// rowIndex++;
// colIndex = 1;
// foreach (DataColumn col in dt.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();
// }
// }
// }
// //加载一个合计行
// int rowSum = rowIndex + 1;
// int colSum = 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;//设置为浅黄色,共计有56种
// //取得整个报表的标题
// 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);
// string filename = 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.SaveAs strBookName;
// //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
// return filename;
//}
#endregion
#region Kill Excel进程
/// <summary>
/// 结束Excel进程
/// </summary>
public void KillExcelProcess()
{
Process[] myProcesses;
DateTime startTime;
myProcesses = Process.GetProcessesByName("Excel");
//得不到Excel进程ID,暂时只能判断进程启动时间
foreach (Process myProcess in myProcesses)
{
startTime = myProcess.StartTime;
if (startTime > beforeTime && startTime < afterTime)
{
myProcess.Kill();
}
}
}
#endregion
#endregion
#region 将DataTable的数据导出显示为报表(不使用Excel对象,使用COM.Excel)
#region 使用示例
/*使用示例:
* DataSet ds=(DataSet)Session["AdBrowseHitDayList"];
string ExcelFolder=Assistant.GetConfigString("ExcelFolder");
string FilePath=Server.MapPath(".")+"\\"+ExcelFolder+"\\";
//生成列的中文对应表
Hashtable nameList = new Hashtable();
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对象
DataToExcel dte=new DataToExcel();
string filename="";
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
/// <summary>
/// 将DataTable的数据导出显示为报表(不使用Excel对象)
/// </summary>
/// <param name="dt">数据DataTable</param>
/// <param name="strTitle">标题</param>
/// <param name="FilePath">生成文件的路径</param>
/// <param name="nameList"></param>
/// <returns></returns>
//public string DataExcel(System.Data.DataTable dt, string strTitle, string FilePath, Hashtable nameList)
//{
// COM.Excel.cExcelFile excel = new COM.Excel.cExcelFile();
// ClearFile(FilePath);
// string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".xls";
// excel.CreateFile(FilePath + filename);
// excel.PrintGridLines = false;
// COM.Excel.cExcelFile.MarginTypes mt1 = COM.Excel.cExcelFile.MarginTypes.xlsTopMargin;
// COM.Excel.cExcelFile.MarginTypes mt2 = COM.Excel.cExcelFile.MarginTypes.xlsLeftMargin;
// COM.Excel.cExcelFile.MarginTypes mt3 = COM.Excel.cExcelFile.MarginTypes.xlsRightMargin;
// COM.Excel.cExcelFile.MarginTypes mt4 = COM.Excel.cExcelFile.MarginTypes.xlsBottomMargin;
// double height = 1.5;
// excel.SetMargin(ref mt1, ref height);
// excel.SetMargin(ref mt2, ref height);
// excel.SetMargin(ref mt3, ref height);
// excel.SetMargin(ref mt4, ref height);
// COM.Excel.cExcelFile.FontFormatting ff = COM.Excel.cExcelFile.FontFormatting.xlsNoFormat;
// string font = "宋体";
// short fontsize = 9;
// excel.SetFont(ref font, ref fontsize, ref ff);
// byte b1 = 1,
// b2 = 12;
// short s3 = 12;
// excel.SetColumnWidth(ref b1, ref b2, ref s3);
// string header = "页眉";
// string footer = "页脚";
// excel.SetHeader(ref header);
// excel.SetFooter(ref footer);
// COM.Excel.cExcelFile.ValueTypes vt = COM.Excel.cExcelFile.ValueTypes.xlsText;
// COM.Excel.cExcelFile.CellFont cf = COM.Excel.cExcelFile.CellFont.xlsFont0;
// COM.Excel.cExcelFile.CellAlignment ca = COM.Excel.cExcelFile.CellAlignment.xlsCentreAlign;
// COM.Excel.cExcelFile.CellHiddenLocked chl = COM.Excel.cExcelFile.CellHiddenLocked.xlsNormal;
// // 报表标题
// int cellformat = 1;
// // int rowindex = 1,colindex = 3;
// // object title = (object)strTitle;
// // excel.WriteValue(ref vt, ref cf, ref ca, ref chl,ref rowindex,ref colindex,ref title,ref cellformat);
// int rowIndex = 1;//起始行
// int colIndex = 0;
// //取得列标题
// foreach (DataColumn colhead in dt.Columns)
// {
// colIndex++;
// string name = colhead.ColumnName.Trim();
// object namestr = (object)name;
// IDictionaryEnumerator Enum = nameList.GetEnumerator();
// while (Enum.MoveNext())
// {
// if (Enum.Key.ToString().Trim() == name)
// {
// namestr = Enum.Value;
// }
// }
// excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex, ref namestr, ref cellformat);
// }
// //取得表格中的数据
// foreach (DataRow row in dt.Rows)
// {
// rowIndex++;
// colIndex = 0;
// foreach (DataColumn col in dt.Columns)
// {
// colIndex++;
// if (col.DataType == System.Type.GetType("System.DateTime"))
// {
// object str = (object)(Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd"); ;
// excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex, ref str, ref cellformat);
// }
// else
// {
// object str = (object)row[col.ColumnName].ToString();
// excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex, ref str, ref cellformat);
// }
// }
// }
// int ret = excel.CloseFile();
// // if(ret!=0)
// // {
// // //MessageBox.Show(this,"Error!");
// // }
// // else
// // {
// // //MessageBox.Show(this,"请打开文件c:\\test.xls!");
// // }
// return filename;
//}
#endregion
#region 清理过时的Excel文件
private void ClearFile(string FilePath)
{
String[] Files = System.IO.Directory.GetFiles(FilePath);
if (Files.Length > 10)
{
for (int i = 0; i < 10; i++)
{
try
{
System.IO.File.Delete(Files[i]);
}
catch
{
}
}
}
}
#endregion
}
}
C#EXCEL 操作类--C#DataToExcel帮助类的更多相关文章
- C#EXCEL 操作类--C#ExcelHelper操作类
主要功能如下1.导出Excel文件,自动返回可下载的文件流 2.导出Excel文件,转换为可读模式3.导出Excel文件,并自定义文件名4.将数据导出至Excel文件5.将指定的集合数据导出至Exce ...
- Excel 操作类
转载:http://www.cnblogs.com/fellowcheng/archive/2010/08/21/1805158.html ExcelHelper(Excel2007) Code hi ...
- C#常用工具类——Excel操作类
/// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...
- C# Excel操作类
/// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...
- C#常用工具类——Excel操作类(ZT)
本文转载于: http://www.cnblogs.com/zfanlong1314/p/3916047.html /// 常用工具类——Excel操作类 /// <para> ----- ...
- C#封装的VSTO Excel操作类
自己在用的Excel操作类,因为经常在工作中要操作Excel文件,可是使用vba实现起来实在是不方便,而且编写也很困难,拼接一个字符串都看的眼花. 这个时候C#出现了,发现使用C#来操作Excel非常 ...
- C#自定义Excel操作类
C#自定义Excel操作类,可以用于将DataTable导出到Excel文件,从Excel文件读取数据. using System; using System.IO; using System.Dat ...
- 2019.06.05 ABAP EXCEL 操作类代码 OLE方式(模板下载,excel上传,内表下载)
一般使用标准的excel导入方法9999行,修改了标准的excel导入FM 整合出类:excel的 模板下载,excel上传,ALV内表下载功能. 在项目一开始可以SE24创建一个类来供整体开发使用, ...
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
随机推荐
- OC测试错误整理
3. NSDictionary *dict = [NSDictionary dictionaryWithObject:@"a value" forKey:@"aKey&q ...
- Notes of learning AutoLayout
在XCode5中,如果我们添加一个Button或者Label,或者其他的什么标准View,而不设置任何constraints,IB会自动生成constraints,而这些constraints是fix ...
- PHP数组操作汇总 php数组的使用技巧
对于Web编程来说,最重要的就是存取和读写数据了.存储方式可能有很多种,可以是字符串.数组.文件的形式等. 数组,可以说是PHP的数据应用中较重要的一种方式.PHP的数组函数众多,下面是我学习的小 ...
- iOS-服务器文件断点下载
文件下载基本步骤:1.获取下载链接,创建响应发送请求.(使用异步请求,避免因文件过大下载时间长而阻塞主线程).2.当接到响应时在下载目录中创建文件.创建文件使用NSFileHandle进行文件内部处理 ...
- 简单介绍Javascript匿名函数和面向对象编程
忙里偷闲,简单介绍一下Javascript中匿名函数和闭包函数以及面向对象编程.首先简单介绍一下Javascript中的密名函数. 在Javascript中函数有以下3中定义方式: 1.最常用的定义方 ...
- 学习使用monkey 测试
一.Monkey测试简介Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时 ...
- mm/kmalloc.c
/* * linux/mm/kmalloc.c * * Copyright (C) 1991, 1992 Linus Torvalds & Roger Wolff. * * Writt ...
- HDU 2577(DP)
题意:要求一个字符串输入,按键盘的最少次数.有Caps Lock和Shift两种转换大小写输入的方式 思路:用dpa与dpb数组分别记录Caps Lock的开关状态,dpa表示不开,dpb表示开 代码 ...
- 为 C# 代码生成 API 文档(译)
原文地址:http://broadcast.oreilly.com/2010/09/build-html-documentation-for-y.html#comments Sandcastle 功能 ...
- ajax+php处理案例
<div> <table> <tr> <th>状态</th> <th>信息</th> </tr> < ...