VSTO C# 操作excel
生活随笔
收集整理的這篇文章主要介紹了
VSTO C# 操作excel
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
VSTO C# 操作excel
using System; using System.Data; using System.Configuration; using System.Web; using Microsoft.Office.Interop; using Microsoft.Office.Core;namespace Microsoft.Office.Interop.ExcelEdit {/// <SUMMARY>/// Microsoft.Office.Interop.ExcelEdit 的摘要說明/// </SUMMARY>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();}} }總結
以上是生活随笔為你收集整理的VSTO C# 操作excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 要访问1KB的内存为啥需要10位地址线,
- 下一篇: c# char unsigned_dll