Excel物件模型的一些使用心得(C#)
最近在做一個很小的專案,做Excel的匯出。用到了Excel 10.0 (使用者要求),對應的Office版本是2002(XP).在某篇文章中找到了一個操作Excel物件的基礎類,裡面的方法比較全了,我這裡只記錄我所做專案中用到的幾個特殊的用法。
Excel.Application myExcel;
Excel.Workbook myWorkBook;
- 單元格查詢功能,即實現Excel中的(Ctrl+F)功能。
Excel.Range newRange = range.Find(conditions, rangeAfter, Excel.XlFindLookIn.xlFormulas, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false, false, false);其中conditions為查詢的條件,rangeafter為從哪個單元格之後開始查詢。Find()方法返回型別也為Range。 - 插入空行,插入空列。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->public void InsertRow(int startRow, int endRow)
{
Excel.Worksheet worksheet = (Excel.Worksheet)myExcel.ActiveSheet;//獲取當前工作表
Excel.Range range = (Excel.Range)worksheet.Rows[startRow.ToString() + ":" + endRow.ToString(),System.Type.Missing];
range.Insert(Excel.XlInsertShiftDirection.xlShiftDown, Type.Missing);
}
public void InsertColumn(int startColumn, int endColumn)
{
Excel.Worksheet worksheet = (Excel.Worksheet)myExcel.ActiveSheet;//獲取當前工作表
Excel.Range range = (Excel.Range)worksheet.Columns[Type.Missing, startColumn.ToString() + ":" + endColumn.ToString()];
range.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, Type.Missing);
} - 向單元格新增批註。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->///
/// 新增批註
///
/// 批註
/// 行
/// 列
///
public bool AddComent(object coment, int row, int column)
{
try
{
Excel.Range range = myExcel.get_Range(myExcel.Cells[row, column], myExcel.Cells[row, column]);
range.AddComment(coment);
return true;
}
catch
{
return false;
}
} - 設定行高。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->///
/// 設定行高
///
/// 起始行
/// 結束行
/// 行高
public void SetRowHeight(int startRow, int endRow, int height)
{
//獲取當前正在使用的工作表
Excel.Worksheet worksheet = (Excel.Worksheet)myExcel.ActiveSheet;
Excel.Range range = (Excel.Range)worksheet.Rows[startRow.ToString() + ":" + endRow.ToString(), System.Type.Missing];
range.RowHeight = height;
} - 實現Copy格式功能,即格式刷功能。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->newRange.PasteSpecial(Excel.XlPasteType.xlPasteFormats, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false); - 在程式碼中對原先是合併的單元格使用上面的PasteSpecial方法後,可能會把原先合併的單元格拆分開,我在專案中解決的辦法是,在查詢的時候,把原先合併的單元格Range物件儲存到陣列中,然後PasteSpecial,在程式碼最後再對陣列中的單元格進行合併。
CellUnit
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->Excel.Range[] mergeDataRange = new Excel.Range[2048];//用於儲存原模板中單元格合併狀態的陣列
//查詢newRange
if((bool)newRange.MergeCells== true)
{
mergeDataRange[i] = newRange.MergeArea;
}
//對所有原來是合併的單元格進行重新合併
foreach (Excel.Range range1 in mergeDataRange)
{
if (range1 != null && range1.Count !=1)
{
range1.Merge(Type.Missing);
}
else
{
break;
}
} - 以上列出的功能很少,僅僅是為了給自己的工作做一下小結,回顧一下自己寫的程式碼,同時也期待各位朋友的指正和討論。另外,在做Office開發用到COM元件的時候,遇到不熟悉的功能,可以在Office中錄製巨集,把自己需要解決的問題用VBA記錄下來,然後檢視,對自己編寫程式碼會有很大啟發。
- 另外MSDN對Excel物件模型有個比較詳細的介紹:http://msdn.microsoft.com/zh-cn/library/aa168292(office.11,printer).aspx
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-464291/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LuckySheet一款線上Excel使用心得Excel
- 使用Kotlin的一些心得體會以及部分語法解析:Kotlin
- Gorm 的使用心得和一些常用擴充套件 (一)GoORM套件
- C# 使用Aspose.Cells 匯出ExcelC#Excel
- C#中關於 object,dynamic 一點使用心得C#Object
- C# 填充ExcelC#Excel
- C#使用開源操作庫MiniExcel操作ExcelC#Excel
- .net core下對於Excel的一些操作及使用Excel
- [譯] 關於 HTTP/3 的一些心得HTTP
- 關於最近面試的一些心得面試
- 對React setState的一些思考與心得React
- 關於c#使用Npoi庫的一些隨筆C#
- C# 物件C#物件
- 使用 EPPlus 封裝的 excel 表格匯入功能 (.net core c#)封裝ExcelC#
- thinkcmf 的使用心得
- eclipse的使用心得Eclipse
- 談談一些學習心得
- 關於WiFi密碼破解的一些心得WiFi密碼
- C#使用 NPOI 新增圖片到 Excel 單元格C#Excel
- 對 Android SDK 開發的一些個人心得Android
- MySQL升級過程中的一些心得-2MySql
- MySQL升級過程中的一些心得-1MySql
- C# 實現NPOI的Excel匯出C#Excel
- C#中EXCEL的輸入和倒出C#Excel
- php curl的使用心得PHP
- xlua中lua物件到c#物件的轉型物件C#
- 使用c#強大的表示式樹實現物件的深克隆C#物件
- Midjourney的一些學習心得:如何高效的圖生圖
- 物件導向的一些概念物件
- 一線架構師的一些專案管理心得架構專案管理
- 關於C和C++混編的一些心得C++
- 軟體開發的一些思考及心得體會
- K專案的一些心得之專案管理篇專案管理
- 分享一些建站心得,及職業道路
- c++中的物件模型C++物件模型
- 多維灰色預測模型心得模型
- 日常分享:關於時間複雜度和空間複雜度的一些優化心得分享(C#)時間複雜度優化C#
- c#設定匯出Excel的列寬C#Excel
- C# read excel file via ExcelDataReaderC#ExcelLDA