425 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			425 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using GoldPrinter.ExcelConstants;
 | ||
| using Microsoft.Office.Interop.Excel;
 | ||
| using System;
 | ||
| using System.Drawing;
 | ||
| using System.IO;
 | ||
| using System.Reflection;
 | ||
| 
 | ||
| namespace GoldPrinter
 | ||
| {
 | ||
| 	public class ExcelBase
 | ||
| 	{
 | ||
| 		private Application _xlApp;
 | ||
| 
 | ||
| 		private Workbook _xlWorkbook;
 | ||
| 
 | ||
| 		private bool _IsVisibledExcel;
 | ||
| 
 | ||
| 		private string _FormCaption;
 | ||
| 
 | ||
| 		private object oMissing = Missing.Value;
 | ||
| 
 | ||
| 		public Application Application
 | ||
| 		{
 | ||
| 			get
 | ||
| 			{
 | ||
| 				return this._xlApp;
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		public Workbook Workbooks
 | ||
| 		{
 | ||
| 			get
 | ||
| 			{
 | ||
| 				return this._xlWorkbook;
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		public bool IsVisibledExcel
 | ||
| 		{
 | ||
| 			get
 | ||
| 			{
 | ||
| 				return this._IsVisibledExcel;
 | ||
| 			}
 | ||
| 			set
 | ||
| 			{
 | ||
| 				this._IsVisibledExcel = value;
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		public string FormCaption
 | ||
| 		{
 | ||
| 			get
 | ||
| 			{
 | ||
| 				return this._FormCaption;
 | ||
| 			}
 | ||
| 			set
 | ||
| 			{
 | ||
| 				this._FormCaption = value;
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		public ExcelBase()
 | ||
| 		{
 | ||
| 			this._IsVisibledExcel = false;
 | ||
| 			this._FormCaption = "打印预览";
 | ||
| 			try
 | ||
| 			{
 | ||
| 				this._xlApp = new ApplicationClass();
 | ||
| 			}
 | ||
| 			catch (Exception ex)
 | ||
| 			{
 | ||
| 				throw new ExceptionExcelCreateInstance("创建Excel类实例时错误,详细信息:" + ex.Message);
 | ||
| 			}
 | ||
| 			this._xlApp.DisplayAlerts = false;
 | ||
| 		}
 | ||
| 
 | ||
| 		public void Open()
 | ||
| 		{
 | ||
| 			try
 | ||
| 			{
 | ||
| 				this._xlWorkbook = this._xlApp.Workbooks.Add(this.oMissing);
 | ||
| 			}
 | ||
| 			catch (Exception ex)
 | ||
| 			{
 | ||
| 				throw new ExceptionExcelOpen("打开Excel时错误,详细信息:" + ex.Message);
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		public void Open(string p_templateFileName)
 | ||
| 		{
 | ||
| 			if (File.Exists(p_templateFileName))
 | ||
| 			{
 | ||
| 				try
 | ||
| 				{
 | ||
| 					this._xlWorkbook = this._xlApp.Workbooks.Add(p_templateFileName);
 | ||
| 				}
 | ||
| 				catch (Exception ex)
 | ||
| 				{
 | ||
| 					throw new ExceptionExcelOpen("打开Excel时错误,详细信息:" + ex.Message);
 | ||
| 				}
 | ||
| 			}
 | ||
| 			else
 | ||
| 			{
 | ||
| 				this.Open();
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		public void Close()
 | ||
| 		{
 | ||
| 			this._xlApp.Workbooks.Close();
 | ||
| 			this._xlWorkbook = null;
 | ||
| 			this._xlApp.Quit();
 | ||
| 			this._xlApp = null;
 | ||
| 			this.oMissing = null;
 | ||
| 			GC.Collect();
 | ||
| 		}
 | ||
| 
 | ||
| 		public void ShowExcel()
 | ||
| 		{
 | ||
| 			this._xlApp.Visible = true;
 | ||
| 		}
 | ||
| 
 | ||
| 		public void PrintPreview()
 | ||
| 		{
 | ||
| 			this._xlApp.Caption = this._FormCaption;
 | ||
| 			this._xlApp.Visible = true;
 | ||
| 			try
 | ||
| 			{
 | ||
| 				this._xlApp.ActiveWorkbook.PrintPreview(this.oMissing);
 | ||
| 			}
 | ||
| 			catch
 | ||
| 			{
 | ||
| 			}
 | ||
| 			this._xlApp.Visible = this.IsVisibledExcel;
 | ||
| 		}
 | ||
| 
 | ||
| 		public void Print()
 | ||
| 		{
 | ||
| 			this._xlApp.Visible = this.IsVisibledExcel;
 | ||
| 			object value = Missing.Value;
 | ||
| 			try
 | ||
| 			{
 | ||
| 				this._xlApp.ActiveWorkbook.PrintOut(value, value, value, value, value, value, value, value);
 | ||
| 			}
 | ||
| 			catch
 | ||
| 			{
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		public bool SaveAs(string p_fileName, bool p_ReplaceExistsFileName)
 | ||
| 		{
 | ||
| 			bool result = false;
 | ||
| 			if (File.Exists(p_fileName))
 | ||
| 			{
 | ||
| 				if (p_ReplaceExistsFileName)
 | ||
| 				{
 | ||
| 					try
 | ||
| 					{
 | ||
| 						File.Delete(p_fileName);
 | ||
| 						result = true;
 | ||
| 					}
 | ||
| 					catch (Exception ex)
 | ||
| 					{
 | ||
| 						string message = ex.Message;
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 			try
 | ||
| 			{
 | ||
| 				this._xlApp.ActiveWorkbook.SaveCopyAs(p_fileName);
 | ||
| 				result = true;
 | ||
| 			}
 | ||
| 			catch
 | ||
| 			{
 | ||
| 				result = false;
 | ||
| 			}
 | ||
| 			return result;
 | ||
| 		}
 | ||
| 
 | ||
| 		public Range GetRange(int p_rowIndex, int p_colIndex)
 | ||
| 		{
 | ||
| 			return this.GetRange(p_rowIndex, p_colIndex, p_rowIndex, p_colIndex);
 | ||
| 		}
 | ||
| 
 | ||
| 		public Range GetRange(int p_rowIndex, string p_colChars)
 | ||
| 		{
 | ||
| 			return this.GetRange(p_rowIndex, p_colChars, p_rowIndex, p_colChars);
 | ||
| 		}
 | ||
| 
 | ||
| 		public Range GetRange(int p_startRowIndex, int p_startColIndex, int p_endRowIndex, int p_endColIndex)
 | ||
| 		{
 | ||
| 			return this._xlApp.get_Range(this._xlApp.Cells[p_startRowIndex, p_startColIndex], this._xlApp.Cells[p_endRowIndex, p_endColIndex]);
 | ||
| 		}
 | ||
| 
 | ||
| 		public Range GetRange(int p_startRowIndex, string p_startColChars, int p_endRowIndex, string p_endColChars)
 | ||
| 		{
 | ||
| 			return this._xlApp.get_Range(p_startColChars + p_startRowIndex.ToString(), p_endColChars + p_endRowIndex.ToString());
 | ||
| 		}
 | ||
| 
 | ||
| 		public void MergeCells(Range p_Range)
 | ||
| 		{
 | ||
| 			p_Range.HorizontalAlignment = Constants.xlCenter;
 | ||
| 			p_Range.VerticalAlignment = Constants.xlCenter;
 | ||
| 			p_Range.WrapText = false;
 | ||
| 			p_Range.Orientation = 0;
 | ||
| 			p_Range.AddIndent = false;
 | ||
| 			p_Range.IndentLevel = 0;
 | ||
| 			p_Range.ShrinkToFit = false;
 | ||
| 			p_Range.MergeCells = false;
 | ||
| 			p_Range.Merge(this.oMissing);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void InsertVPageBreaks(int p_rowIndex)
 | ||
| 		{
 | ||
| 		}
 | ||
| 
 | ||
| 		public void InsertHPageBreaks(int p_colIndex)
 | ||
| 		{
 | ||
| 		}
 | ||
| 
 | ||
| 		public void InsertHPageBreaks(string p_colChars)
 | ||
| 		{
 | ||
| 		}
 | ||
| 
 | ||
| 		public void InsertRow(int p_rowIndex)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(p_rowIndex, "A");
 | ||
| 			range.Select();
 | ||
| 			range.EntireRow.Insert(this.oMissing, Missing.Value);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void InsertRow(int p_rowIndex, int p_templateRowIndex)
 | ||
| 		{
 | ||
| 			Range range = (Range)this._xlApp.Rows[p_templateRowIndex.ToString() + ":" + p_templateRowIndex.ToString(), this.oMissing];
 | ||
| 			range.Select();
 | ||
| 			range.Copy(this.oMissing);
 | ||
| 			this.InsertRow(p_rowIndex);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void InsertColumn(int p_colIndex)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(1, p_colIndex);
 | ||
| 			range.Select();
 | ||
| 			range.EntireColumn.Insert(this.oMissing, Missing.Value);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void InsertColumn(string p_colChars)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(1, p_colChars);
 | ||
| 			range.Select();
 | ||
| 			range.EntireColumn.Insert(this.oMissing, Missing.Value);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void DeleteRow(int p_rowIndex)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(p_rowIndex, "A");
 | ||
| 			range.Select();
 | ||
| 			range.EntireRow.Delete(this.oMissing);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void DeleteColumn(int p_colIndex)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(1, p_colIndex);
 | ||
| 			range.Select();
 | ||
| 			range.EntireColumn.Delete(this.oMissing);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void DeleteColumn(string p_colChars)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(1, p_colChars);
 | ||
| 			range.Select();
 | ||
| 			range.EntireColumn.Delete(this.oMissing);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void SetRowHeight(int p_rowIndex, float p_rowHeight)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(p_rowIndex, "A");
 | ||
| 			range.Select();
 | ||
| 			range.RowHeight = p_rowHeight;
 | ||
| 		}
 | ||
| 
 | ||
| 		public void SetColumnWidth(int p_colIndex, float p_colWidth)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(1, p_colIndex);
 | ||
| 			range.Select();
 | ||
| 			range.ColumnWidth = p_colWidth;
 | ||
| 		}
 | ||
| 
 | ||
| 		public void SetColumnWidth(string p_colChars, float p_colWidth)
 | ||
| 		{
 | ||
| 			Range range = this.GetRange(1, p_colChars);
 | ||
| 			range.Select();
 | ||
| 			range.ColumnWidth = p_colWidth;
 | ||
| 		}
 | ||
| 
 | ||
| 		public void SetFont(Range p_Range, System.Drawing.Font p_Font)
 | ||
| 		{
 | ||
| 			this.SetFont(p_Range, p_Font, Color.Black);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void SetFont(Range p_Range, System.Drawing.Font p_Font, Color p_color)
 | ||
| 		{
 | ||
| 			p_Range.Select();
 | ||
| 			p_Range.Font.Name = p_Font.Name;
 | ||
| 			p_Range.Font.Size = p_Font.Size;
 | ||
| 			p_Range.Font.Bold = p_Font.Bold;
 | ||
| 			p_Range.Font.Italic = p_Font.Italic;
 | ||
| 			p_Range.Font.Strikethrough = p_Font.Strikeout;
 | ||
| 			p_Range.Font.Underline = p_Font.Underline;
 | ||
| 		}
 | ||
| 
 | ||
| 		public void SetBordersEdge(Range p_Range, BordersEdge p_BordersEdge)
 | ||
| 		{
 | ||
| 			this.SetBordersEdge(p_Range, p_BordersEdge, BordersLineStyle.xlContinuous, BordersWeight.xlThin);
 | ||
| 		}
 | ||
| 
 | ||
| 		public void SetBordersEdge(Range p_Range, BordersEdge p_BordersEdge, BordersLineStyle p_BordersLineStyle, BordersWeight p_BordersWeight)
 | ||
| 		{
 | ||
| 			p_Range.Select();
 | ||
| 			Border border = null;
 | ||
| 			switch (p_BordersEdge)
 | ||
| 			{
 | ||
| 			case BordersEdge.xlLineStyleNone:
 | ||
| 				p_Range.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 				p_Range.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 				p_Range.Borders[XlBordersIndex.xlEdgeLeft].LineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 				p_Range.Borders[XlBordersIndex.xlEdgeTop].LineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 				p_Range.Borders[XlBordersIndex.xlEdgeBottom].LineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 				p_Range.Borders[XlBordersIndex.xlEdgeRight].LineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 				p_Range.Borders[XlBordersIndex.xlInsideVertical].LineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 				p_Range.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 				break;
 | ||
| 			case BordersEdge.xlLeft:
 | ||
| 				border = p_Range.Borders[XlBordersIndex.xlEdgeLeft];
 | ||
| 				break;
 | ||
| 			case BordersEdge.xlRight:
 | ||
| 				border = p_Range.Borders[XlBordersIndex.xlEdgeRight];
 | ||
| 				break;
 | ||
| 			case BordersEdge.xlTop:
 | ||
| 				border = p_Range.Borders[XlBordersIndex.xlEdgeTop];
 | ||
| 				break;
 | ||
| 			case BordersEdge.xlBottom:
 | ||
| 				border = p_Range.Borders[XlBordersIndex.xlEdgeBottom];
 | ||
| 				break;
 | ||
| 			case BordersEdge.xlDiagonalDown:
 | ||
| 				border = p_Range.Borders[XlBordersIndex.xlDiagonalDown];
 | ||
| 				break;
 | ||
| 			case BordersEdge.xlDiagonalUp:
 | ||
| 				border = p_Range.Borders[XlBordersIndex.xlDiagonalUp];
 | ||
| 				break;
 | ||
| 			case BordersEdge.xlInsideHorizontal:
 | ||
| 				border = p_Range.Borders[XlBordersIndex.xlInsideHorizontal];
 | ||
| 				break;
 | ||
| 			case BordersEdge.xlInsideVertical:
 | ||
| 				border = p_Range.Borders[XlBordersIndex.xlInsideVertical];
 | ||
| 				break;
 | ||
| 			}
 | ||
| 			if (border != null)
 | ||
| 			{
 | ||
| 				XlLineStyle xlLineStyle = XlLineStyle.xlContinuous;
 | ||
| 				switch (p_BordersLineStyle)
 | ||
| 				{
 | ||
| 				case BordersLineStyle.xlContinuous:
 | ||
| 					xlLineStyle = XlLineStyle.xlContinuous;
 | ||
| 					break;
 | ||
| 				case BordersLineStyle.xlDash:
 | ||
| 					xlLineStyle = XlLineStyle.xlDash;
 | ||
| 					break;
 | ||
| 				case BordersLineStyle.xlDashDot:
 | ||
| 					xlLineStyle = XlLineStyle.xlDashDot;
 | ||
| 					break;
 | ||
| 				case BordersLineStyle.xlDashDotDot:
 | ||
| 					xlLineStyle = XlLineStyle.xlDashDotDot;
 | ||
| 					break;
 | ||
| 				case BordersLineStyle.xlDot:
 | ||
| 					xlLineStyle = XlLineStyle.xlDot;
 | ||
| 					break;
 | ||
| 				case BordersLineStyle.xlDouble:
 | ||
| 					xlLineStyle = XlLineStyle.xlDouble;
 | ||
| 					break;
 | ||
| 				case BordersLineStyle.xlLineStyleNone:
 | ||
| 					xlLineStyle = XlLineStyle.xlLineStyleNone;
 | ||
| 					break;
 | ||
| 				case BordersLineStyle.xlSlantDashDot:
 | ||
| 					xlLineStyle = XlLineStyle.xlSlantDashDot;
 | ||
| 					break;
 | ||
| 				}
 | ||
| 				border.LineStyle = xlLineStyle;
 | ||
| 				XlBorderWeight xlBorderWeight = XlBorderWeight.xlThin;
 | ||
| 				switch (p_BordersWeight)
 | ||
| 				{
 | ||
| 				case BordersWeight.xlHairline:
 | ||
| 					xlBorderWeight = XlBorderWeight.xlHairline;
 | ||
| 					break;
 | ||
| 				case BordersWeight.xlMedium:
 | ||
| 					xlBorderWeight = XlBorderWeight.xlMedium;
 | ||
| 					break;
 | ||
| 				case BordersWeight.xlThick:
 | ||
| 					xlBorderWeight = XlBorderWeight.xlThick;
 | ||
| 					break;
 | ||
| 				case BordersWeight.xlThin:
 | ||
| 					xlBorderWeight = XlBorderWeight.xlThin;
 | ||
| 					break;
 | ||
| 				}
 | ||
| 				border.Weight = xlBorderWeight;
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		public void ClearBordersEdge(Range p_Range)
 | ||
| 		{
 | ||
| 			this.SetBordersEdge(p_Range, BordersEdge.xlLineStyleNone);
 | ||
| 		}
 | ||
| 
 | ||
| 		public string GetCellText(Range p_Range)
 | ||
| 		{
 | ||
| 			return p_Range.Text.ToString();
 | ||
| 		}
 | ||
| 
 | ||
| 		public void SetCellText(Range p_Range, string p_text)
 | ||
| 		{
 | ||
| 			p_Range.Cells.FormulaR1C1 = p_text;
 | ||
| 		}
 | ||
| 	}
 | ||
| }
 |