C#加载项Excel:ActiveSheet
对于我的第一个AddIn Excel,我想select工作表活动和计数表中的列和行。
我在自定义function区中创build了一个button。
private void AddValues_Click(object sender, RibbonControlEventArgs e) { int lastRow; int lastColonne; lastRow = Globals.VATTools.Application.Selection.Rows.Count; lastColonne = Globals.VATTools.Application.Selection.Columns.Count; System.Windows.Forms.MessageBox.Show("Row : " + lastRow + " " + "Columns : " + lastColonne); Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.Visible = true; Microsoft.Office.Interop.Excel.Workbook xlWb = xlApp.ActiveWorkbook as Microsoft.Office.Interop.Excel.Workbook; Microsoft.Office.Interop.Excel.Worksheet xlSheet = xlWb.ActiveSheet; Microsoft.Office.Interop.Excel.Range range = xlSheet.get_Range("A19"); range.Value = "hello world!"; }
我的第一个问题:它返回我1列和1行。 但在我的工作表中,我有23列和17行。 为什么不能在我的工作表中返回正确数量的行和列?
第二个问题:我在ActiveSheet上有个例外:
Microsoft.Office.Interop.Excel.Worksheet xlSheet = xlWb.ActiveSheet;
错误:System.NullReferenceException:'对象引用未设置为对象的实例。
我不明白为什么我有这个错误。
谢谢 !
第一个问题:
您需要使用工作表对象中的UsedRange属性。 这个select只会给你关于所选单元当前部分的信息。
Microsoft.Office.Interop.Excel.Range usedRange = xlSheet.UsedRange; //To get the number of rows/columns int totalRows = usedRange.Rows.Count; int totalColumns = usedRange.Columns.Count;
第二个问题:
由于你正在编写一个插件,所以你不需要创build一个新的excelApp。 以下代码将使您可以访问您的文档
Microsoft.Office.Interop.Excel.Workbook xlWb = Globals.ThisAddin.Application.ActiveDocument.Workbook;
另一个问题…我select名称为“UniqueID”的特定列:
Microsoft.Office.Interop.Excel.Range testColumn = xlSheet.UsedRange.Columns.Name("Test");
我想在所有这一列中添加一个特定的值到最后一行使用。
我如何继续?