using System;
using System.Data;using System.Configuration;
using System.Web;
using Microsoft.Office.Interop;
using Microsoft.Office.Core;
namespace Microsoft.Office.Interop.ExcelEdit{? ??
////// Microsoft.Office.Interop.ExcelEdit 的摘要說明
public class ExcelEdit? ?
?{? ??
? ? public string mFilename; ? ?
?? ?public Microsoft.Office.Interop.Excel.Application app;? ? ?
?? public Microsoft.Office.Interop.Excel.Workbooks wbs;? ??
? ? public Microsoft.Office.Interop.Excel.Workbook wb;? ??
? ? public Microsoft.Office.Interop.Excel.Worksheets wss;? ? ?
?? public Microsoft.Office.Interop.Excel.Worksheet ws;? ? ?
?? public ExcelEdit()? ? ? ??
{? ? ? ? ? ? //? ? ? ? ? ? // TODO: 在此處添加構造函數邏輯? ? ? ? ? ? //? ? ? ? }? ??
? ? public void Create()//創建一個Microsoft.Office.Interop.Excel對象? ??
? ? {? ? ? ? ? ??
? ? ?app = new Microsoft.Office.Interop.Excel.Application();? ? ??
? ? ? wbs = app.Workbooks;? ? ? ?
?? ? wb = wbs.Add(true);? ? ?
?? }? ? ??
? public void Open(string FileName)//打開一個Microsoft.Office.Interop.Excel文件? ? ? ?
?{? ? ? ? ? ??
app = new Microsoft.Office.Interop.Excel.Application();? ? ? ? ? ?
?wbs = app.Workbooks;? ? ? ? ? ??
wb = wbs.Add(FileName);? ? ? ? ? ??
//wb = wbs.Open(FileName, 0, true, 5,"", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true,Type.Missing,Type.Missing);? ? ? ? ? ?
?//wb = wbs.Open(FileName,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);? ? ? ? ? ??
mFilename = FileName;? ? ? ?
?}? ? ? ??
public Microsoft.Office.Interop.Excel.Worksheet GetSheet(string SheetName)? ? ? ? //獲取一個工作表? ? ??
? {? ? ? ? ? ??
Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[SheetName];? ? ? ? ? ?
?return s;? ??
? ? }? ? ?
?? public Microsoft.Office.Interop.Excel.Worksheet AddSheet(string SheetName)? ? ? ? //添加一個工作表? ? ? ??
{? ? ? ? ??
? Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);? ? ? ? ? ?
?s.Name = SheetName;? ? ? ? ? ??
return s;? ? ? ?
?}? ? ? ?
?public void DelSheet(string SheetName)//刪除一個工作表? ? ??
? {? ? ? ??
? ? ((Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[SheetName]).Delete();??
? ? ? }? ? ? ??
public Microsoft.Office.Interop.Excel.Worksheet ReNameSheet(string OldSheetName, string NewSheetName)//重命名一個工作表一? ? ?
?? {? ? ? ? ? ??
Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[OldSheetName];? ? ? ??
? ? s.Name = NewSheetName;? ? ? ? ?
?? return s;? ? ? ?
?}? ? ? ??
public Microsoft.Office.Interop.Excel.Worksheet ReNameSheet(Microsoft.Office.Interop.Excel.Worksheet Sheet, string NewSheetName)//重命名一個工作表二? ? ? ?
?{? ? ? ? ? ??
Sheet.Name = NewSheetName;? ? ? ? ? ??
return Sheet;? ? ? ??
}? ? ? ?
?public void SetCellValue(Microsoft.Office.Interop.Excel.Worksheet ws, int x, int y, object value)? ? ? ? //ws:要設值的工作表? ? X行Y列? ? value? 值? ? ? ?
?{? ? ? ? ? ?
?ws.Cells[x, y] = value;? ? ?
?? }? ? ? ??
public void SetCellValue(string ws, int x, int y, object value)? ? ? ? //ws:要設值的工作表的名稱 X行Y列 value 值? ? ??
? {? ? ? ? ? ??
GetSheet(ws).Cells[x, y] = value;? ? ??
? }? ? ? ??
public void SetCellProperty(Microsoft.Office.Interop.Excel.Worksheet ws, int Startx, int Starty, int Endx, int Endy, int size, string name, Microsoft.Office.Interop.Excel.Constants color, Microsoft.Office.Interop.Excel.Constants HorizontalAlignment)? ? ? ? //設置一個單元格的屬性? 字體,? 大小,顏色? ,對齊方式? ? ??
? {? ? ? ? ? ??
name = "宋體";? ? ? ? ? ?
?size = 12;? ? ? ? ? ??
color = Microsoft.Office.Interop.Excel.Constants.xlAutomatic;? ? ? ? ? ?
?HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlRight;? ??
?ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Name = name;? ? ? ? ? ? ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Size = size;? ? ? ? ? ? ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Color = color;? ? ? ? ? ? ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).HorizontalAlignment = HorizontalAlignment;? ? ? ??
}? ? ? ?
?public void SetCellProperty(string wsn, int Startx, int Starty, int Endx, int Endy, int size, string name, Microsoft.Office.Interop.Excel.Constants color, Microsoft.Office.Interop.Excel.Constants HorizontalAlignment)? ? ? ??
{? ? ? ? ? ?
?//name = "宋體";? ? ? ? ? ?
?//size = 12;? ? ? ? ? ?
?//color = Microsoft.Office.Interop.Excel.Constants.xlAutomatic;? ? ? ? ??
? //HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlRight;? ? ? ? ? ? Microsoft.Office.Interop.Excel.Worksheet ws = GetSheet(wsn);? ? ? ? ? ? ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Name = name;? ? ? ? ? ? ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Size = size;? ? ? ? ? ? ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Color = color;? ? ? ? ? ? ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).HorizontalAlignment = HorizontalAlignment;? ? ? ?
?}? ? ??
? public void UniteCells(Microsoft.Office.Interop.Excel.Worksheet ws, int x1, int y1, int x2, int y2)? ? ? ? //合并單元格? ? ?
?? {? ? ? ? ? ??
ws.get_Range(ws.Cells[x1, y1], ws.Cells[x2, y2]).Merge(Type.Missing);? ??
? ? }? ? ? ??
public void UniteCells(string ws, int x1, int y1, int x2, int y2)? ? ? ? //合并單元格? ? ? ?
?{? ? ? ? ? ??
GetSheet(ws).get_Range(GetSheet(ws).Cells[x1, y1], GetSheet(ws).Cells[x2, y2]).Merge(Type.Missing);? ?
?? ? }? ? ? ?
?public void InsertTable(System.Data.DataTable dt, string ws, int startX, int startY)//將內存中數據表格插入到Microsoft.Office.Interop.Excel指定工作表的指定位置 為在使用模板時控制格式時使用一? ? ? ?
?{? ? ? ? ? ??
for (int i = 0; i? <= dt.Rows.Count - 1; i++) ? ? ??
? ? {? ? ? ? ? ? ?
?? for (int j = 0; j? <= dt.Columns.Count - 1; j++)? ? ? ??
? ? ? ? {? ? ? ? ? ? ? ? ? ??
GetSheet(ws).Cells[startX+i, j + startY] = dt.Rows[i][j].ToString();? ? ??
? ? ? ? ? }? ? ? ??
? ? }? ? ??
? }? ? ? ?
?public void InsertTable(System.Data.DataTable dt, Microsoft.Office.Interop.Excel.Worksheet ws, int startX, int startY)//將內存中數據表格插入到Microsoft.Office.Interop.Excel指定工作表的指定位置二? ? ? ?
?{? ? ? ? ? ?
?for (int i = 0; i? <= dt.Rows.Count - 1; i++)? ? ??
? ? ? {? ? ? ? ? ? ? ??
for (int j = 0; j? <= dt.Columns.Count - 1; j++)? ? ? ? ??
? ? ? {? ? ? ? ? ? ? ? ? ?
?ws.Cells[startX+i, j + startY] = dt.Rows[i][j];? ? ? ? ? ? ?
?? }? ? ? ? ? ?
?}? ? ??
? }? ? ? ??
public void AddTable(System.Data.DataTable dt, string ws, int startX, int startY)//將內存中數據表格添加到Microsoft.Office.Interop.Excel指定工作表的指定位置一? ? ? ?
?{? ? ? ? ? ?
?for (int i = 0; i? <= dt.Rows.Count - 1; i++)? ? ??
? ? ? { ? ? ? ? ? ? ??
for (int j = 0; j? <= dt.Columns.Count - 1; j++)? ? ? ? ?
?? ? ? {? ? ? ? ? ? ? ? ? ?
?GetSheet(ws).Cells[i + startX, j + startY] = dt.Rows[i][j];? ? ? ? ? ?
?? ? }? ? ? ? ?
?? }? ? ? ?
?}? ? ? ??
public void AddTable(System.Data.DataTable dt, Microsoft.Office.Interop.Excel.Worksheet ws, int startX, int startY)//將內存中數據表格添加到Microsoft.Office.Interop.Excel指定工作表的指定位置二? ? ??
? {? ? ? ? ??
? for (int i = 0; i? <= dt.Rows.Count - 1; i++)? ? ? ? ?
?? {? ? ? ? ? ? ??
? for (int j = 0; j? <= dt.Columns.Count - 1; j++)? ? ? ? ? ? ?
?? {? ? ? ? ? ? ? ? ? ??
ws.Cells[i + startX, j + startY] = dt.Rows[i][j];? ? ? ? ? ??
? ? }? ? ? ? ??
? }? ? ? ?
?}? ? ??
? public void InsertPictures(string Filename, string ws)? ? ? ? //插入圖片操作一? ? ??
? {? ? ? ? ? ?
?GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);? ? ? ? ? ? //后面的數字表示位置? ? ??
? }? ? ??
? //public void InsertPictures(string Filename, string ws, int Height, int Width)? ? ? ? //插入圖片操作二? ? ? ??
//{? ? ??
? //? ? GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);? ? ??
? //? ? GetSheet(ws).Shapes.get_Range(Type.Missing).Height = Height;? ? ??
? //? ? GetSheet(ws).Shapes.get_Range(Type.Missing).Width = Width;? ? ? ??
//}? ? ? ?
?//public void InsertPictures(string Filename, string ws, int left, int top, int Height, int Width)? ? ? ? //插入圖片操作三? ? ? ??
//{? ? ? ?
?//? ? GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);? ? ? ?
?//? ? GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementLeft(left);? ? ? ?
?//? ? GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementTop(top);? ? ?
?? //? ? GetSheet(ws).Shapes.get_Range(Type.Missing).Height = Height;? ? ? ??
//? ? GetSheet(ws).Shapes.get_Range(Type.Missing).Width = Width;? ? ? ??
//}? ? ? ??
public void InsertActiveChart(Microsoft.Office.Interop.Excel.XlChartType ChartType, string ws, int DataSourcesX1, int DataSourcesY1, int DataSourcesX2, int DataSourcesY2, Microsoft.Office.Interop.Excel.XlRowCol ChartDataType)? ? ? ?
?//插入圖表操作? ? ? ?
?{? ? ? ? ? ??
ChartDataType = Microsoft.Office.Interop.Excel.XlRowCol.xlColumns;? ? ? ? ? ? wb.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);? ? ? ??
? ? {? ? ? ? ? ? ? ??
wb.ActiveChart.ChartType = ChartType;? ?
?? ? ? ? ? ? wb.ActiveChart.SetSourceData(GetSheet(ws).get_Range(GetSheet(ws).Cells[DataSourcesX1, DataSourcesY1], GetSheet(ws).Cells[DataSourcesX2, DataSourcesY2]), ChartDataType);? ? ?
?? ? ? ? ? wb.ActiveChart.Location(Microsoft.Office.Interop.Excel.XlChartLocation.xlLocationAsObject, ws);? ? ? ? ??
? }? ? ??
? }? ? ?
?? public bool Save()? ? ? ? //保存文檔? ?
?? ? {? ? ? ? ? ?
?if (mFilename == "")? ? ? ? ??
? {? ? ? ? ? ? ? ?
?return false;? ? ? ? ? ?
?}? ? ? ? ? ?
?else? ? ? ? ?
?? {? ? ? ? ? ? ?
?? try? ? ? ? ? ??
? ? {? ? ? ? ? ? ? ? ? ??
wb.Save();? ? ? ? ? ? ? ? ?
?? return true;? ? ? ? ? ? ?
?? }? ? ? ? ? ? ? ?
?catch (Exception ex)? ? ? ? ? ?
?? ? {? ? ? ? ? ? ? ? ? ??
return false;? ? ? ? ? ? ?
?? }? ? ? ? ? ?
?}? ? ? ??
}? ? ? ?
?public bool SaveAs(object FileName)? ? ? ? //文檔另存為? ? ? ?
?{? ? ? ? ? ??
try? ? ? ? ?
?? {? ? ? ? ? ? ??
? wb.SaveAs(FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);? ? ?
?? ? ? ? ? return true;? ? ? ? ??
? }? ? ? ? ? ??
catch (Exception ex) ? ? ? ? ?
?{? ? ? ? ? ? ? ??
return false;? ? ??
? ? ? }? ? ?
?? }? ? ??
? public void Close()? ? ? ? //關閉一個Microsoft.Office.Interop.Excel對象,銷毀對象? ? ??
? {? ? ? ? ??
? //wb.Save();? ? ? ? ??
? wb.Close(Type.Missing, Type.Missing, Type.Missing);? ? ? ? ? ?
?wbs.Close();? ? ? ? ? ?
?app.Quit();? ? ? ? ??
? wb = null;? ? ? ? ? ??
wbs = null;? ? ? ? ? ??
app = null;? ? ? ? ? ??
GC.Collect();? ? ? ?
?}? ??
}
}