Vs2010 Silverlight4.0在OOB模式下操作Excel通用处理类
(1)
ExcelHelper public class ExcelHelper { #region私有变量 ///summary ///Excel工程 ////summary dynamic_myExcel; #endregion #region属性 ///summary ///工作薄 ////summary public dynamicMyWorkBook{ get ; set ;} ///summary ///工作表 ////summary public dynamicWorkSheet{ get ; se
ExcelHelper
public class ExcelHelper
{
#region 私有变量
/// <summary>
/// Excel工程
/// </summary>
dynamic _myExcel;
#endregion
#region 属性
/// <summary>
/// 工作薄
/// </summary>
public dynamic MyWorkBook { get; set; }
/// <summary>
/// 工作表
/// </summary>
public dynamic WorkSheet { get; set; }
#endregion
/// <summary>
/// 创建Excel工作薄
/// </summary>
public void CreateExcel()
{
_myExcel = AutomationFactory.CreateObject("Excel.Application");
MyWorkBook = _myExcel.Workbooks.Add(true);
WorkSheet = _myExcel.ActiveSheet;
}
/// <summary>
/// 显示工作薄
/// </summary>
public void ShowExcel()
{
_myExcel.Visible = true;
}
/// <summary>
/// 重命名工作表
/// </summary>
/// <param name="sheetNum">工作表序号,从左到右,从1开始</param>
/// <param name="newName">新的工作表名</param>
public void ReNameWorkSheet(int sheetNum, string newName)
{
dynamic workSheet = _myExcel.Worksheets[sheetNum];
workSheet.Name = newName;
}
/// <summary>
/// 重名命工作表
/// </summary>
/// <param name="oldName">旧的工作表名</param>
/// <param name="newName">新的工作表名</param>
public void ReNameWorkSheet(string oldName, string newName)
{
dynamic workSheet = _myExcel.Worksheets[oldName];
workSheet.Name = newName;
}
/// <summary>
/// 新建工作表
/// </summary>
/// <param name="sheetName">工作表名</param>
public void CreateWorkSheet(string sheetName)
{
dynamic newWorkSheet = _myExcel.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
newWorkSheet.Name = sheetName;
}
/// <summary>
/// 激活工作表
/// </summary>
/// <param name="sheetNum">工作表序号</param>
public void ActiveSheet(int sheetNum)
{
dynamic workSheet = _myExcel.Worksheets[sheetNum];
workSheet.Activate();
}
/// <summary>
/// 激活工作表
/// </summary>
/// <param name="sheetName">工作表名</param>
public void ActiveSheet(string sheetName)
{
dynamic workSheet = _myExcel.Worksheets[sheetName];
workSheet.Activate();
}
/// <summary>
/// 删除工作表
/// </summary>
/// <param name="sheetNum">工作表序号</param>
public void DeleteWorkSheet(int sheetNum)
{
(_myExcel.Worksheets[sheetNum]).Delete();
}
/// <summary>
/// 删除工作表
/// </summary>
/// <param name="sheetName"></param>
public void DeleteWorkSheet(string sheetName)
{
(_myExcel.Worksheets[sheetName]).Delete();
}
{
#region 私有变量
/// <summary>
/// Excel工程
/// </summary>
dynamic _myExcel;
#endregion
#region 属性
/// <summary>
/// 工作薄
/// </summary>
public dynamic MyWorkBook { get; set; }
/// <summary>
/// 工作表
/// </summary>
public dynamic WorkSheet { get; set; }
#endregion
/// <summary>
/// 创建Excel工作薄
/// </summary>
public void CreateExcel()
{
_myExcel = AutomationFactory.CreateObject("Excel.Application");
MyWorkBook = _myExcel.Workbooks.Add(true);
WorkSheet = _myExcel.ActiveSheet;
}
/// <summary>
/// 显示工作薄
/// </summary>
public void ShowExcel()
{
_myExcel.Visible = true;
}
/// <summary>
/// 重命名工作表
/// </summary>
/// <param name="sheetNum">工作表序号,从左到右,从1开始</param>
/// <param name="newName">新的工作表名</param>
public void ReNameWorkSheet(int sheetNum, string newName)
{
dynamic workSheet = _myExcel.Worksheets[sheetNum];
workSheet.Name = newName;
}
/// <summary>
/// 重名命工作表
/// </summary>
/// <param name="oldName">旧的工作表名</param>
/// <param name="newName">新的工作表名</param>
public void ReNameWorkSheet(string oldName, string newName)
{
dynamic workSheet = _myExcel.Worksheets[oldName];
workSheet.Name = newName;
}
/// <summary>
/// 新建工作表
/// </summary>
/// <param name="sheetName">工作表名</param>
public void CreateWorkSheet(string sheetName)
{
dynamic newWorkSheet = _myExcel.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
newWorkSheet.Name = sheetName;
}
/// <summary>
/// 激活工作表
/// </summary>
/// <param name="sheetNum">工作表序号</param>
public void ActiveSheet(int sheetNum)
{
dynamic workSheet = _myExcel.Worksheets[sheetNum];
workSheet.Activate();
}
/// <summary>
/// 激活工作表
/// </summary>
/// <param name="sheetName">工作表名</param>
public void ActiveSheet(string sheetName)
{
dynamic workSheet = _myExcel.Worksheets[sheetName];
workSheet.Activate();
}
/// <summary>
/// 删除工作表
/// </summary>
/// <param name="sheetNum">工作表序号</param>
public void DeleteWorkSheet(int sheetNum)
{
(_myExcel.Worksheets[sheetNum]).Delete();
}
/// <summary>
/// 删除工作表
/// </summary>
/// <param name="sheetName"></param>
public void DeleteWorkSheet(string sheetName)
{
(_myExcel.Worksheets[sheetName]).Delete();
}
(2)
///summary ///将数据写入指定的单元格 ////summary ///paramname=data要写入的数据/param ///paramname=row行号/param ///paramname=column列号/param public void WriteData( string data, int row, int column)
/// <summary>
/// 将数据写入指定的单元格
/// </summary>
/// <param name="data">要写入的数据</param>
/// <param name="row">行号</param>
/// <param name="column">列号</param>
public void WriteData(string data, int row, int column)
{
WorkSheet.Cells[row, column] = data;
}
/// <summary>
/// 将数据集合写入Excel
/// </summary>
/// <param name="data">要写入的二维数组数据</param>
/// <param name="startRow">Excel起始行</param>
/// <param name="startColumn">Excel起始列</param>
public void WriteData(string[,] data, int startRow, int startColumn)
{
int rowCount = data.GetLength(0);
int columnCount = data.GetLength(1);
for (int i = 0; i < rowCount; i++)
{
for (int j = 0; j < columnCount; j++)
{
WorkSheet.Cells[startRow + i, startColumn + j] = "'" + data[i, j];
}
}
}
/// <summary>
/// 合并单元格
/// </summary>
/// <param name="startRow">开始行</param>
/// <param name="startColumn">开始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
public void UnitCells(int startRow, int startColumn, int endRow, int endColumn)
{
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
range.MergeCells = true;
}
/// <summary>
/// 设置对齐方式
/// </summary>
/// <param name="startRow">开始行</param>
/// <param name="startColumn">开始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
/// <param name="hAlign">水平对齐</param>
/// <param name="vAlign">垂直对齐</param>
public void AlignmentCells(int startRow, int startColumn, int endRow, int endColumn, ExcelStyle.ExcelHAlign hAlign, ExcelStyle.ExcelVAlign vAlign)
{
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
range.VerticalAlignment = (int)vAlign;
range.HorizontalAlignment = (int)hAlign;
}
/// <summary>
/// 绘制指定单元格的边框
/// </summary>
/// <param name="startRow">起始行</param>
/// <param name="startColumn">起始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
/// <param name="isDrawTop">是否画上外框</param>
/// <param name="isDrawBottom">是否画下外框</param>
/// <param name="isDrawLeft">是否画左外框</param>
/// <param name="isDrawRight">是否画右外框</param>
/// <param name="isDrawHInside">是否画水平内框</param>
/// <param name="isDrawVInside">是否画垂直内框</param>
/// <param name="isDrawDiagonalUp">是否画斜向上线</param>
/// <param name="lineStyle">线类型</param>
/// <param name="borderWeight">线粗细</param>
/// <param name="color">线颜色</param>
/// <param name="isDrawDiagonalDown">是否画斜向下线</param>
public void DrawCellsFrame(int startRow, int startColumn, int endRow, int endColumn,
bool isDrawTop, bool isDrawBottom, bool isDrawLeft, bool isDrawRight,
bool isDrawHInside, bool isDrawVInside, bool isDrawDiagonalDown, bool isDrawDiagonalUp,
ExcelStyle.LineStyle lineStyle, ExcelStyle.BorderWeight borderWeight, ExcelStyle.ColorIndex color)
{
//获取画边框的单元格
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
//清除所有边框
range.Borders[XlBordersIndex.xlEdgeTop].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlEdgeBottom].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlEdgeLeft].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlEdgeRight].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlInsideVertical].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = ExcelStyle.LineStyle.无;
//以下是按参数画边框
if (isDrawTop)
{
range.Borders[XlBordersIndex.xlEdgeTop].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlEdgeTop].Weight = borderWeight;
range.Borders[XlBordersIndex.xlEdgeTop].ColorIndex = color;
}
if (isDrawBottom)
{
range.Borders[XlBordersIndex.xlEdgeBottom].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlEdgeBottom].Weight = borderWeight;
range.Borders[XlBordersIndex.xlEdgeBottom].ColorIndex = color;
}
if (isDrawLeft)
{
range.Borders[XlBordersIndex.xlEdgeLeft].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlEdgeLeft].Weight = borderWeight;
range.Borders[XlBordersIndex.xlEdgeLeft].ColorIndex = color;
}
if (isDrawRight)
{
range.Borders[XlBordersIndex.xlEdgeRight].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlEdgeRight].Weight = borderWeight;
range.Borders[XlBordersIndex.xlEdgeRight].ColorIndex = color;
}
if (isDrawVInside)
{
range.Borders[XlBordersIndex.xlInsideVertical].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlInsideVertical].Weight = borderWeight;
range.Borders[XlBordersIndex.xlInsideVertical].ColorIndex = color;
}
if (isDrawHInside)
{
range.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlInsideHorizontal].Weight = borderWeight;
range.Borders[XlBordersIndex.xlInsideHorizontal].ColorIndex = color;
}
if (isDrawDiagonalDown)
{
range.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlDiagonalDown].Weight = borderWeight;
range.Borders[XlBordersIndex.xlDiagonalDown].ColorIndex = color;
}
if (isDrawDiagonalUp)
{
range.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlDiagonalUp].Weight = borderWeight;
range.Borders[XlBordersIndex.xlDiagonalUp].ColorIndex = color;
}
}
/// 将数据写入指定的单元格
/// </summary>
/// <param name="data">要写入的数据</param>
/// <param name="row">行号</param>
/// <param name="column">列号</param>
public void WriteData(string data, int row, int column)
{
WorkSheet.Cells[row, column] = data;
}
/// <summary>
/// 将数据集合写入Excel
/// </summary>
/// <param name="data">要写入的二维数组数据</param>
/// <param name="startRow">Excel起始行</param>
/// <param name="startColumn">Excel起始列</param>
public void WriteData(string[,] data, int startRow, int startColumn)
{
int rowCount = data.GetLength(0);
int columnCount = data.GetLength(1);
for (int i = 0; i < rowCount; i++)
{
for (int j = 0; j < columnCount; j++)
{
WorkSheet.Cells[startRow + i, startColumn + j] = "'" + data[i, j];
}
}
}
/// <summary>
/// 合并单元格
/// </summary>
/// <param name="startRow">开始行</param>
/// <param name="startColumn">开始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
public void UnitCells(int startRow, int startColumn, int endRow, int endColumn)
{
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
range.MergeCells = true;
}
/// <summary>
/// 设置对齐方式
/// </summary>
/// <param name="startRow">开始行</param>
/// <param name="startColumn">开始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
/// <param name="hAlign">水平对齐</param>
/// <param name="vAlign">垂直对齐</param>
public void AlignmentCells(int startRow, int startColumn, int endRow, int endColumn, ExcelStyle.ExcelHAlign hAlign, ExcelStyle.ExcelVAlign vAlign)
{
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
range.VerticalAlignment = (int)vAlign;
range.HorizontalAlignment = (int)hAlign;
}
/// <summary>
/// 绘制指定单元格的边框
/// </summary>
/// <param name="startRow">起始行</param>
/// <param name="startColumn">起始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
/// <param name="isDrawTop">是否画上外框</param>
/// <param name="isDrawBottom">是否画下外框</param>
/// <param name="isDrawLeft">是否画左外框</param>
/// <param name="isDrawRight">是否画右外框</param>
/// <param name="isDrawHInside">是否画水平内框</param>
/// <param name="isDrawVInside">是否画垂直内框</param>
/// <param name="isDrawDiagonalUp">是否画斜向上线</param>
/// <param name="lineStyle">线类型</param>
/// <param name="borderWeight">线粗细</param>
/// <param name="color">线颜色</param>
/// <param name="isDrawDiagonalDown">是否画斜向下线</param>
public void DrawCellsFrame(int startRow, int startColumn, int endRow, int endColumn,
bool isDrawTop, bool isDrawBottom, bool isDrawLeft, bool isDrawRight,
bool isDrawHInside, bool isDrawVInside, bool isDrawDiagonalDown, bool isDrawDiagonalUp,
ExcelStyle.LineStyle lineStyle, ExcelStyle.BorderWeight borderWeight, ExcelStyle.ColorIndex color)
{
//获取画边框的单元格
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
//清除所有边框
range.Borders[XlBordersIndex.xlEdgeTop].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlEdgeBottom].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlEdgeLeft].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlEdgeRight].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlInsideVertical].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = ExcelStyle.LineStyle.无;
range.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = ExcelStyle.LineStyle.无;
//以下是按参数画边框
if (isDrawTop)
{
range.Borders[XlBordersIndex.xlEdgeTop].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlEdgeTop].Weight = borderWeight;
range.Borders[XlBordersIndex.xlEdgeTop].ColorIndex = color;
}
if (isDrawBottom)
{
range.Borders[XlBordersIndex.xlEdgeBottom].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlEdgeBottom].Weight = borderWeight;
range.Borders[XlBordersIndex.xlEdgeBottom].ColorIndex = color;
}
if (isDrawLeft)
{
range.Borders[XlBordersIndex.xlEdgeLeft].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlEdgeLeft].Weight = borderWeight;
range.Borders[XlBordersIndex.xlEdgeLeft].ColorIndex = color;
}
if (isDrawRight)
{
range.Borders[XlBordersIndex.xlEdgeRight].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlEdgeRight].Weight = borderWeight;
range.Borders[XlBordersIndex.xlEdgeRight].ColorIndex = color;
}
if (isDrawVInside)
{
range.Borders[XlBordersIndex.xlInsideVertical].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlInsideVertical].Weight = borderWeight;
range.Borders[XlBordersIndex.xlInsideVertical].ColorIndex = color;
}
if (isDrawHInside)
{
range.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlInsideHorizontal].Weight = borderWeight;
range.Borders[XlBordersIndex.xlInsideHorizontal].ColorIndex = color;
}
if (isDrawDiagonalDown)
{
range.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlDiagonalDown].Weight = borderWeight;
range.Borders[XlBordersIndex.xlDiagonalDown].ColorIndex = color;
}
if (isDrawDiagonalUp)
{
range.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = lineStyle;
range.Borders[XlBordersIndex.xlDiagonalUp].Weight = borderWeight;
range.Borders[XlBordersIndex.xlDiagonalUp].ColorIndex = color;
}
}
(3)
///summary ///设置单元格背景色及填充方式 ////summary ///paramname=startRow起始行/param ///paramname=startColumn起始列/param ///paramname=endRow结束行/param ///paramname=endColumn结束列/param ///param
/// <summary>
/// 设置单元格背景色及填充方式
/// </summary>
/// <param name="startRow">起始行</param>
/// <param name="startColumn">起始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
/// <param name="color">颜色索引</param>
public void CellsBackColor(int startRow, int startColumn, int endRow, int endColumn, ExcelStyle.ColorIndex color)
{
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
range.Interior.ColorIndex = color;
range.Interior.Pattern = ExcelStyle.Pattern.Solid;
}
/// <summary>
///设置单元格背景色及填充方式
/// </summary>
/// <param name="startRow">开始行</param>
/// <param name="startColumn">开始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
/// <param name="color">颜色索引</param>
/// <param name="pattern">填充方式</param>
public void CellsBackColor(int startRow, int startColumn, int endRow, int endColumn, ExcelStyle.ColorIndex color, ExcelStyle.Pattern pattern)
{
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
range.Interior.ColorIndex = color;
range.Interior.Pattern = pattern;
}
/// <summary>
/// 设置行高
/// </summary>
/// <param name="startRow">开始行</param>
/// <param name="endRow">结束行</param>
/// <param name="height">行高</param>
public void SetRowHeight(int startRow, int endRow, float height)
{
dynamic range = WorkSheet.Rows[startRow.ToString() + ":" + endRow.ToString(), Type.Missing];
range.RowHeight = height;
}
/// 设置单元格背景色及填充方式
/// </summary>
/// <param name="startRow">起始行</param>
/// <param name="startColumn">起始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
/// <param name="color">颜色索引</param>
public void CellsBackColor(int startRow, int startColumn, int endRow, int endColumn, ExcelStyle.ColorIndex color)
{
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
range.Interior.ColorIndex = color;
range.Interior.Pattern = ExcelStyle.Pattern.Solid;
}
/// <summary>
///设置单元格背景色及填充方式
/// </summary>
/// <param name="startRow">开始行</param>
/// <param name="startColumn">开始列</param>
/// <param name="endRow">结束行</param>
/// <param name="endColumn">结束列</param>
/// <param name="color">颜色索引</param>
/// <param name="pattern">填充方式</param>
public void CellsBackColor(int startRow, int startColumn, int endRow, int endColumn, ExcelStyle.ColorIndex color, ExcelStyle.Pattern pattern)
{
dynamic range = WorkSheet.Range[WorkSheet.Cells[startRow, startColumn], WorkSheet.Cells[endRow, endColumn]];
range.Interior.ColorIndex = color;
range.Interior.Pattern = pattern;
}
/// <summary>
/// 设置行高
/// </summary>
/// <param name="startRow">开始行</param>
/// <param name="endRow">结束行</param>
/// <param name="height">行高</param>
public void SetRowHeight(int startRow, int endRow, float height)
{
dynamic range = WorkSheet.Rows[startRow.ToString() + ":" + endRow.ToString(), Type.Missing];
range.RowHeight = height;
}
本文来自freesunshine的博客,原文地址:http://hi.baidu.com/freesunshine/blog/item/58fa79af79ef6ae0faed5090.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器