标签:des winform style blog http io color os ar
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop;
using Microsoft.Office.Core;
using System.IO;
using System.Windows.Forms;
using System.Data;
using System.Reflection;
namespace WinFormsApplication
{
public class ExcelLib
{
//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrgrfexcelapplicationobject.asp
#region Variables
private Microsoft.Office.Interop.Excel.Application excelApplication = null;
private Microsoft.Office.Interop.Excel.Workbooks excelWorkBooks = null;
private Microsoft.Office.Interop.Excel.Workbook excelWorkBook = null;
private Microsoft.Office.Interop.Excel.Worksheet excelWorkSheet = null;
private Microsoft.Office.Interop.Excel.Range excelRange = null;//Excel Range Object,多¨¤种?用®?途ª?
private Microsoft.Office.Interop.Excel.Range excelCopySourceRange = null;//Excel Range Object
private int excelActiveWorkSheetIndex; //活?动¡¥工¡è作Á¡Â表À¨ª索¡Â引°y
private string excelOpenFileName = ""; //操¨´作Á¡ÂExcel的Ì?路¡¤径?
private string excelSaveFileName = ""; //保À¡ê存ä?Excel的Ì?路¡¤径?
#endregion
#region Properties
public int ActiveSheetIndex
{
get
{
return excelActiveWorkSheetIndex;
}
set
{
excelActiveWorkSheetIndex = value;
}
}
public string OpenFileName
{
get
{
return excelOpenFileName;
}
set
{
excelOpenFileName = value;
}
}
public string SaveFileName
{
get
{
return excelSaveFileName;
}
set
{
excelSaveFileName = value;
}
}
#endregion
//
//--------------------------------------------------------------------------------------------------------
///
/// 构1造¨¬函¡¥数ºy;ê?
///
public ExcelLib()
{
excelApplication = null;//Excel Application Object
excelWorkBooks = null;//Workbooks
excelWorkBook = null;//Excel Workbook Object
excelWorkSheet = null;//Excel Worksheet Object
ActiveSheetIndex = 1; //默?认¨?值¦Ì活?动¡¥工¡è作Á¡Â簿?为a第̨²一°?个?;ê?设¦¨¨置?活?动¡¥工¡è作Á¡Â簿?请?参?阅?SetActiveWorkSheet()
}
///
/// 以°?excelOpenFileName为a模¡ê板ã?新?建¡§Excel文?件t
///
public bool OpenExcelFile()
{
if (excelApplication != null) CloseExcelApplication();
//检¨¬查¨¦文?件t是º?否¤?存ä?在¨²
if (excelOpenFileName == "")
{
throw new Exception("请?选?择?文?件t!ê?");
}
if (!File.Exists(excelOpenFileName))
{
throw new Exception(excelOpenFileName + "该?文?件t不?存ä?在¨²!ê?");//该?异°¨¬常¡ê如¨?何?处ä|理¤¨ª,ê?由®¨¦什º2么¡ä处ä|理¤¨ª?ê??ê??ê??ê?
}
try
{
excelApplication = new Microsoft.Office.Interop.Excel.ApplicationClass();
excelWorkBooks = excelApplication.Workbooks;
excelWorkBook = ((Microsoft.Office.Interop.Excel.Workbook)excelWorkBooks.Open(excelOpenFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value));
excelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets[excelActiveWorkSheetIndex];
excelApplication.Visible = false;
return true;
}
catch (Exception e)
{
CloseExcelApplication();
MessageBox.Show("(1)没?有®D安ã2装Á¡ãExcel 2003;ê?(2)或¨°没?有®D安ã2装Á¡ãExcel 2003 .NET 可¨¦编À¨¤程¨¬性?支¡ì持?;ê?/n详¨º细?信?息¡é:êo"
+ e.Message, "提¬¨¢示º?", MessageBoxButtons.OK, MessageBoxIcon.Information);
//throw new Exception(e.Message);
return false;
}
}
///
/// 读¨¢取¨?一°?个?Cell的Ì?值¦Ì
///
/// 要°a读¨¢取¨?的Ì?Cell的Ì?行D索¡Â引°y
/// 要°a读¨¢取¨?的Ì?Cell的Ì?列¢D索¡Â引°y
/// Cell的Ì?值¦Ì
public string getOneCellValue(int CellRowID, int CellColumnID)
{
if (CellRowID 0)
{
throw new Exception("行D索¡Â引°y超?出?范¤?围¡ì!ê?");
}
string sValue = "";
try
{
sValue = ((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID]).Text.ToString();
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
return (sValue);
}
///
/// 读¨¢取¨?一°?个?连¢?续?区?域®¨°的Ì?Cell的Ì?值¦Ì(矩?形?区?域®¨°,ê?包㨹含?一°?行D或¨°一°?列¢D,或¨°多¨¤行D,ê?多¨¤列¢D),ê?返¤¦Ì回?一°?个?一°?维?字Á?符¤?串ä?数ºy组Á¨¦。¡ê
///
/// StartCell是º?要°a写¡ä入¨?区?域®¨°的Ì?左Á¨®上¦?角?单Ì£¤元a格?
/// EndCell是º?要°a写¡ä入¨?区?域®¨°的Ì?右®¨°下?角?单Ì£¤元a格?
/// 值¦Ì的Ì?集¡¥合?
public string[] getCellsValue(string StartCell, string EndCell)
{
string[] sValue = null;
//try
//{
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.get_Range(StartCell, EndCell);
sValue = new string[excelRange.Count];
int rowStartIndex = ((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.get_Range(StartCell, StartCell)).Row; //起e始º?行D号?
int columnStartIndex = ((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.get_Range(StartCell, StartCell)).Column; //起e始º?列¢D号?
int rowNum = excelRange.Rows.Count; //行D数ºy目?
int columnNum = excelRange.Columns.Count; //列¢D数ºy目?
int index = 0;
for (int i = rowStartIndex; i )
{
for (int j = columnStartIndex; j )
{
//读¨¢到Ì?空?值¦Ìnull和¨ª读¨¢到Ì?空?串ä?""分¤?别Àe处ä|理¤¨ª
sValue[index] = ((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[i, j]).Text.ToString();
index++;
}
}
//}
//catch (Exception e)
//{
// CloseExcelApplication();
// throw new Exception(e.Message);
//}
return (sValue);
}
///
/// 读¨¢取¨?所¨´有®D单Ì£¤元a格?的Ì?数ºy据Y(矩?形?区?域®¨°),ê?返¤¦Ì回?一°?个?datatable.假¨´设¦¨¨所¨´有®D单Ì£¤元a格?靠?工¡è作Á¡Â表À¨ª左Á¨®上¦?区?域®¨°。¡ê
///
public System.Data.DataTable getAllCellsValue()
{
int columnCount = getTotalColumnCount();
int rowCount = getTotalRowCount();
System.Data.DataTable dt = new System.Data.DataTable();
//设¦¨¨置?datatable列¢D的Ì?名?称?
for (int columnID = 1; columnID )
{
dt.Columns.Add(((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[1, columnID]).Text.ToString());
}
for (int rowID = 2; rowID )
{
DataRow dr = dt.NewRow();
for (int columnID = 1; columnID )
{
dr[columnID - 1] = ((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[rowID, columnID]).Text.ToString();
//读¨¢到Ì?空?值¦Ìnull和¨ª读¨¢到Ì?空?串ä?""分¤?别Àe处ä|理¤¨ª
}
dt.Rows.Add(dr);
}
return (dt);
}
public int getTotalRowCount()
{//当Ì¡À前¡ã活?动¡¥工¡è作Á¡Â表À¨ª中D有®D效¡ì行D数ºy(总Á¨¹行D数ºy)
int rowsNumber = 0;
try
{
while (true)
{
if (((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[rowsNumber + 1, 1]).Text.ToString().Trim() == "" &
((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[rowsNumber + 2, 1]).Text.ToString().Trim() == "" &
((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[rowsNumber + 3, 1]).Text.ToString().Trim() == "")
break;
rowsNumber++;
}
}
catch
{
return -1;
}
return rowsNumber;
}
///
/// 当Ì¡À前¡ã活?动¡¥工¡è作Á¡Â表À¨ª中D有®D效¡ì列¢D数ºy(总Á¨¹列¢D数ºy)
///
///
public int getTotalColumnCount()
{
int columnNumber = 0;
try
{
while (true)
{
if (((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[1, columnNumber + 1]).Text.ToString().Trim() == "" &
((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[1, columnNumber + 2]).Text.ToString().Trim() == "" &
((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[1, columnNumber + 3]).Text.ToString().Trim() == "")
break;
columnNumber++;
}
}
catch
{
return -1;
}
return columnNumber;
}
///
/// 向¨°一°?个?Cell写¡ä入¨?数ºy据Y
///
/// CellRowID是º?cell的Ì?行D索¡Â引°y
/// CellColumnID是º?cell的Ì?列¢D索¡Â引°y
///要°a写¡ä入¨?该?单Ì£¤元a格?的Ì?数ºy据Y值¦Ì
public void setOneCellValue(int CellRowID, int CellColumnID, string Value)
{
try
{
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.Value2 = Value;//Value2?
//Gets or sets the value of the NamedRange control.
//The only difference between this property and the Value property is that Value2 is not a parameterized property.
excelRange = null;
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
///
/// 设¦¨¨置?活?动¡¥工¡è作Á¡Â表À¨ª
///
/// 要°a设¦¨¨置?为a活?动¡¥工¡è作Á¡Â表À¨ª的Ì?索¡Â引°y值¦Ì
public void SetActiveWorkSheet(int SheetIndex)
{
if (SheetIndex 0)
{
throw new Exception("索¡Â引°y超?出?范¤?围¡ì!ê?");
}
try
{
ActiveSheetIndex = SheetIndex;
excelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets[ActiveSheetIndex];
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
///
/// 向¨°连¢?续?区?域®¨°一°?次ä?性?写¡ä入¨?数ºy据Y;ê?只?有®D在¨²区?域®¨°连¢?续?和¨ª写¡ä入¨?的Ì?值¦Ì相¨¤同ª?的Ì?情¨¦况?下?可¨¦以°?使º1用®?方¤?法¤¡§
///
/// StartCell是º?要°a写¡ä入¨?区?域®¨°的Ì?左Á¨®上¦?角?单Ì£¤元a格?
/// EndCell是º?要°a写¡ä入¨?区?域®¨°的Ì?右®¨°下?角?单Ì£¤元a格?
/// 要°a写¡ä入¨?指?定¡§区?域®¨°所¨´有®D单Ì£¤元a格?的Ì?数ºy据Y值¦Ì
public void setCellsValue(string StartCell, string EndCell, string Value)
{
try
{
excelRange = excelWorkSheet.get_Range(StartCell, EndCell);
excelRange.Value2 = Value;
excelRange = null;
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
///
/// 给?一°?行D写¡ä数ºy据Y
///
public void setOneLineValues(int LineID, int StartCellColumnID, int EndCellColumnID, string[] Values)////已°?经-测a试º?
{
//用®?1-19号?元a素?
//if (Values.Length!=EndCellColumnID-StartCellColumnID)
//{
// throw new Exception("单Ì£¤元a格?数ºy目?与®?提¬¨¢供?的Ì?值¦Ì的Ì?数ºy目?不?一°?致?!ê?");
//}
for (int i = StartCellColumnID; i )
{
setOneCellValue(LineID, i, Values[i]);
}
}
public void setCellsBorder(string startCell, string endCell)
{
//设¦¨¨置?某3个?范¤?围¡ì内¨²的Ì?单Ì£¤元a格?的Ì?边À?框¨°
excelRange = excelWorkSheet.get_Range(startCell, endCell);
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
//excelRange.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;
}
public void setOneCellBorder(int CellRowID, int CellColumnID)
{
//设¦¨¨置?某3个?单Ì£¤元a格?的Ì?边À?框¨°
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
excelRange.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
//excelRange.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
//excelRange.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;
}
public void SetColumnWidth(string startCell, string endCell, int size)
{
//设¦¨¨置?某3个?范¤?围¡ì内¨²的Ì?单Ì£¤元a格?的Ì?列¢D的Ì?宽¨ª度¨¨
excelRange = excelWorkSheet.get_Range(startCell, endCell);
excelRange.ColumnWidth = size;
}
public void SetOneCellFont(int CellRowID, int CellColumnID, string fontName, int fontSize)
{
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.Font.Name = fontName;
excelRange.Font.Size = fontSize;
}
public void SetOneCellColor(int CellRowID, int CellColumnID, ColorIndex color)
{
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.Font.ColorIndex = color;
}
public void SetOneCellHorizontalAlignment(int CellRowID, int CellColumnID, Microsoft.Office.Interop.Excel.Constants alignment)
{
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.HorizontalAlignment = alignment;
}
public void SetOneCellColumnWidth(int CellRowID, int CellColumnID, int size)
{
//设¦¨¨置?某3个?单Ì£¤元a格?的Ì?列¢D的Ì?宽¨ª度¨¨
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.ColumnWidth = size;
}
///
/// 设¦¨¨置?一°?个?Cell的Ì?数ºy据Y格?式º?
///
/// CellRowID是º?cell的Ì?行D索¡Â引°y
/// CellColumnID是º?cell的Ì?列¢D索¡Â引°y
///数ºy据Y格?式º?
public void setOneCellNumberFormat(int CellRowID, int CellColumnID, string numberFormat)
{
try
{
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.NumberFormatLocal = numberFormat;
excelRange = null;
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
public void SetRowHeight(string startCell, string endCell, int size)
{
//设¦¨¨置?某3个?范¤?围¡ì内¨²的Ì?单Ì£¤元a格?的Ì?行D的Ì?高?度¨¨
excelRange = excelWorkSheet.get_Range(startCell, endCell);
excelRange.RowHeight = size;
}
public void SetRowHeight(int CellRowID, int CellColumnID, float size)
{
//设¦¨¨置?某3个?范¤?围¡ì内¨²的Ì?单Ì£¤元a格?的Ì?行D的Ì?高?度¨¨
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.RowHeight = size;
}
public void SetOneCellRowHeight(int CellRowID, int CellColumnID, int size)
{
//设¦¨¨置?某3个?单Ì£¤元a格?的Ì?行D的Ì?高?度¨¨
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID];
excelRange.RowHeight = size;
}
///
/// 拷?贝À¡ä区?域®¨°.限T制?:êo在¨²同ª?一°?个?工¡è作Á¡Â表À¨ª中D复¡ä制?
///
/// 源¡ä区?域®¨°的Ì?左Á¨®上¦?角?单Ì£¤元a格?
/// 源¡ä区?域®¨°的Ì?右®¨°下?角?单Ì£¤元a格?
/// 目?标À¨º区?域®¨°的Ì?左Á¨®上¦?角?单Ì£¤元a格?
/// 目?标À¨º区?域®¨°的Ì?右®¨°下?角?单Ì£¤元a格?
public void CopyCells(string SourceStart, string SourceEnd, string DesStart, string DesEnd)
{
try
{
excelCopySourceRange = excelWorkSheet.get_Range(SourceStart, SourceEnd);
excelRange = excelWorkSheet.get_Range(DesStart, DesEnd);
excelCopySourceRange.Copy(excelRange);
excelCopySourceRange = null;
excelRange = null;
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
public void CopyWorksheet(int SourceWorksheetIndex, int DesWorksheetIndex)
{
try
{
// Sheets("Sheet2").Select
//Sheets("Sheet2").Copy After:=Sheets(3)
Microsoft.Office.Interop.Excel.Worksheet sheetSource = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets[SourceWorksheetIndex];
sheetSource.Select(Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet sheetDest = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets[DesWorksheetIndex];
sheetSource.Copy(Missing.Value, sheetDest);
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
///
/// 插?入¨?一°?行D
///
/// 要°a插?入¨?所¨´在¨²行D的Ì?索¡Â引°y位?置?,ê?插?入¨?后¨®其?原-有®D行D下?移°?
/// 要°a插?入¨?行D的Ì?个?数ºy
public void InsertRow(int CellRowID, int RowNum)//插?入¨?空?行D
{
if (CellRowID 0)
{
throw new Exception("行D索¡Â引°y超?出?范¤?围¡ì!ê?");
}
if (RowNum 0)
{
throw new Exception("插?入¨?行D数ºy无T效¡ì!ê?");
}
try
{
excelRange = (Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Rows[CellRowID, Missing.Value];
for (int i = 0; i )
{
excelRange.Insert(Microsoft.Office.Interop.Excel.XlDirection.xlDown, Missing.Value);
}
excelRange = null;
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
///
/// 保À¡ê存ä?Excel文?件t
///
public Microsoft.Office.Interop.Excel.Range FindFirstRange(Microsoft.Office.Interop.Excel.Range xlRange, string FindText)//查¨¦找¨°//没?有®D测a试º?
{
//查¨¦找¨°第̨²一°?个?满¨²足Á?的Ì?区?域®¨°
//Search for the first match
Microsoft.Office.Interop.Excel.Range firstFind = null;
firstFind = xlRange.Find(FindText, Missing.Value, Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues, Microsoft.Office.Interop.Excel.XlLookAt.xlPart, Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, false, Missing.Value, Missing.Value);
return firstFind; //如¨?果?没?找¨°到Ì?,ê?返¤¦Ì回?空?
}
//http://msdn.microsoft.com/library/en-us/dv_wrcore/html/wrtskHowToSearchForTextInWorksheetRanges.asp?frame=true
///
/// 当Ì¡À前¡ã活?动¡¥工¡è作Á¡Â表À¨ª中D有®D效¡ì行D数ºy(总Á¨¹行D数ºy)
///
///
///
/// 判D断?单Ì£¤元a格?是º?否¤?有®D数ºy据Y
///
public bool CellValueIsNull(int CellLineID, int CellColumnID)////已°?经-测a试º?
{
//判D断?单Ì£¤元a格?是º?否¤?有®D数ºy据Y
if ((((Microsoft.Office.Interop.Excel.Range)excelWorkSheet.Cells[CellLineID, CellColumnID]).Text.ToString().Trim() != ""))
return false;
return true;
}
public void newWorkbook(string excelTemplate, string fileName)
{
//以°?excelTemplate为a模¡ê板ã?新?建¡§文?件tfileName
//excelApplication.
excelWorkBook = excelWorkBooks.Add(excelTemplate);
SaveFileName = "";
SaveExcel();
}
public void newWorksheet()
{
excelWorkBook.Worksheets.Add(Missing.Value, Missing.Value, 1, Missing.Value);
}
public void setWorksheetName(int sheetIndex, string worksheetName)
{
// Missing.Value
Microsoft.Office.Interop.Excel._Worksheet sheet = (Microsoft.Office.Interop.Excel._Worksheet)(excelWorkBook.Worksheets[(object)sheetIndex]);
sheet.Name = worksheetName;
}
public void mergeOneLineCells(string startCell, string endCell)
{
//合?并¡é一°?行D单Ì£¤元a格?
excelRange = excelWorkSheet.get_Range(startCell, endCell);
//excelRange.Merge(true);
excelRange.MergeCells = true;
}
public void HorizontalAlignmentCells(string startCell, string endCell, Microsoft.Office.Interop.Excel.Constants alignment)
{
//水?平?对?齐?一°?行D单Ì£¤元a格?
excelRange = excelWorkSheet.get_Range(startCell, endCell);
excelRange.HorizontalAlignment = alignment;
}
public void VerticalAlignmentCells(string startCell, string endCell, Microsoft.Office.Interop.Excel.Constants alignment)
{
//垂ä1直¡À对?齐?一°?行D单Ì£¤元a格?
excelRange = excelWorkSheet.get_Range(startCell, endCell);
excelRange.VerticalAlignment = alignment;
}
//实º¦Ì现?列¢D号?-〉¦Ì字Á?母? (26-〉¦ÌZ,27->AA)
private string ConvertColumnIndexToChar(int columnIndex)
{
if (columnIndex 1 || columnIndex > 256)
{
MessageBox.Show("columnIndex=" + columnIndex + ",超?出?了¢?有®D效¡ì范¤?围¡ì(ꡧ1-256)ê?");
return "A";
}
if (columnIndex >= 1 && columnIndex 26)//1--26
{
return "AA";
}
if (columnIndex >= 27 && columnIndex 256)//27--256
{
return "AA";
}
return "A";
}
//字Á?母?-〉¦Ì列¢D号? Z-〉¦Ì26
public void SaveExcel()
{
if (excelSaveFileName == "")
{
throw new Exception("未¡ä指?定¡§要°a保À¡ê存ä?的Ì?文?件t名?");
}
try
{
//excelWorkSheet.(excelSaveFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value);
excelWorkSheet.SaveAs(excelSaveFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value);
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
//--------------------------------------------------------------------------------------------------------
///
/// 保À¡ê存ä?Excel文?件t,ê?格?式º?xml.
///
public void SaveExcelAsXML()
{
if (excelSaveFileName == "")
{
throw new Exception("未¡ä指?定¡§要°a保À¡ê存ä?的Ì?文?件t名?");
}
try
{
//excelWorkSheet.SaveAs(excelSaveFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value);
excelWorkSheet.SaveAs(excelSaveFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlXMLSpreadsheet, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value);
}
catch (Exception e)
{
CloseExcelApplication();
throw new Exception(e.Message);
}
}
//--------------------------------------------------------------------------------------------------------
///
/// 关?闭À?Excel文?件t,ê?释º¨ª放¤?对?象¨®;ê?最Á?后¨®一°?定¡§要°a调Ì¡Â用®?此ä?函¡¥数ºy,ê?否¤?则¨°会¨¢引°y起e异°¨¬常¡ê
///
///
public void CloseExcelApplication()
{
try
{
excelWorkBooks = null;
excelWorkBook = null;
excelWorkSheet = null;
excelRange = null;
if (excelApplication != null)
{
excelApplication.Workbooks.Close();
//Object missing = Type.Missing;
excelApplication.Quit();
excelApplication = null;
//ReleaseAllRef(excelApplication);//Error
}
}
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
private void ReleaseAllRef(Object obj)
{//ReleaseComObject()方¤?法¤¡§可¨¦以°?使º1RCW减?少¦¨´一°?个?对?COM组Á¨¦件t的Ì?引°y用®?,ê?并¡é返¤¦Ì回?减?少¦¨´一°?个?引°y用®?后¨®RCW对?COM组Á¨¦件t的Ì?剩º¡ê余®¨¤引°y用®?数ºy量¢?。¡ê
//我¨°们?用®?一°?个?循-环¡¤,ê?就¨ª可¨¦以°?让¨?RCW将?所¨´有®D对?COM组Á¨¦件t的Ì?引°y用®?全¨?部?去¨£¤掉Ì?。¡ê
try
{
while (System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) > 1) ;
}
finally
{
obj = null;
}
}
}
public enum ColorIndex
{
无T色¦? = -4142,
自Á?动¡¥ = -4105,
黑¨²色¦? = 1,
褐?色¦? = 53,
橄¦?榄¦- = 52,
深¦?绿¨¬ = 51,
深¦?青¨¤ = 49,
深¦?蓝¤? = 11,
靛Ì?蓝¤? = 55,
灰¨°色¦?80 = 56,
深¦?红¨¬ = 9,
橙¨¨色¦? = 46,
深¦?黄? = 12,
绿¨¬色¦? = 10,
青¨¤色¦? = 14,
蓝¤?色¦? = 5,
蓝¤?灰¨° = 47,
灰¨°色¦?50 = 16,
红¨¬色¦? = 3,
浅3橙¨¨色¦? = 45,
酸¨¢橙¨¨色¦? = 43,
海¡ê绿¨¬ = 50,
水?绿¨¬色¦? = 42,
浅3蓝¤? = 41,
紫Á?罗T兰¤? = 13,
灰¨°色¦?40 = 48,
粉¤?红¨¬ = 7,
金e色¦? = 44,
黄?色¦? = 6,
鲜¨º绿¨¬ = 4,
青¨¤绿¨¬ = 8,
天¬¨¬蓝¤? = 33,
梅¡¤红¨¬ = 54,
灰¨°色¦?25 = 15,
玫¦Ì瑰?红¨¬ = 38,
茶¨¨色¦? = 40,
浅3黄? = 36,
浅3绿¨¬ = 35,
浅3青¨¤绿¨¬ = 34,
淡Ì-蓝¤? = 37,
淡Ì-紫Á? = 39,
白ã¡Á色¦? = 2
}
}
C# 操作Excel 的函数
标签:des winform style blog http io color os ar
原文地址:http://www.cnblogs.com/jindouguang/p/4059604.html