Tag: vsto

ExcelDnaUtil vs Interop.Excel

我目前正在比较Excel-DNA与VSTO和Interop。 我有兴趣使用C#创buildExcel的加载项。 我不需要创buildUDF,而只需要与Excel交互,例如:读取单元格,编写单元格,创build工作表等。 哪种解决scheme会更好:Excel-DNA或VSTO? 谢谢。

如何使Excel单元格内容显示不同的值

我有一个Excel VSTO文件,通过input的数据来绘制图表。 每当一个单元格得到一个值“e”时,它将所有其他单元格的值相加并在该单元格中显示结果。 我希望单元格保持显示值“e”而不是计算的总和。 我怎样才能做到这一点?

从.NET传递到VBA的COM对象的对象生命周期

我的组织有时需要使用Excel来生成一堆格式化的语句(在文档中指出“您的帐户余额为$ X”),将其打印为PDF,然后将它们合并为一个大的PDF。 通常使用的方法涉及由索引单元驱动的单张纸以及另一张纸上的人/数据列表。 VBAmacros将索引单元格从1迭代到N,然后使用Adobe Distiller API每次打印格式化的表格并合并结果。 出于各种原因,我希望在C#中实现我们的VSTO Excel加载macros中大部分的这个macros的逻辑,这样进程的VBA端就会减less到几行。 我决定公开一个大致如下所示的API: AcroPDDoc PdfBegin(Worksheet worksheet, string filename); void PdfAddPage(AcroPDDoc pdf, Worksheet worksheet); void PdfComplete(AcroPDDoc pdf); 你的想法是写VBA的forms: Sub PrintToPdf() Dim obj As IMySharedObject Set obj = Application.COMAddIns("MyAddIn").Object Dim pdf As Acrobat.AcroPDDoc Dim i As Long For i = 1 To 10 Range("counter").Value = i If i = 1 Then […]

如何使用VSTO从excel中获取单元格值?

我想从Excel中获取单元格到csharp,但不知道什么是最好的variablestypes来读取它。 如果我使variables一个string和单元格的值是一个双我得到一个parsing错误。 如果我把variables加倍,那么当单元格是一个string它不会工作。 这是我正在运行的代码: try { string i = Globals.Sheet1.Cells[7, 7].Value; double num; if (i == null) return; if (double.TryParse(i, out num)) { . . . } } catch (Exception e) { MessageBox.Show(e.ToString()); }

在Excel中设置Excel FitToPagesWide为“自动”(VTSO)

当我在Excel中loggingmacros来设置FitToPagesTall = 1并将FitToPagesWide设置为“Automatic”时,它将FitToPagesWide设置为0.但是,在c#中使用VSTO时会出现这种错误。 sheet.PageSetup.FitToPagesWide = 0; 有任何想法吗? 尝试设置为NULL无济于事。

如何使用c sharp VSTO代码隐藏特定的Excel表格?

在我的Vsto Excel项目中,我想用vsto代码隐藏几张Excel表格。 我怎么可以隐藏任何特定的表,即使用其名称或表号? 非常感谢。

以编程方式更好的方式在function区栏上locking/禁用多个UI控件

我一直在想,通过点击来实现locking/禁用一堆Ribbon UI控件的更好方法是什么? 目前,我的方法是简单而基本的: private void tbtnLock_Click(object sender, RibbonControlEventArgs e) { if (tbtnLock.Checked) { control1.Enabled = false; control2.Enabled = false; control3.Enabled = false; //… //controlN.Enabled = false; } else { control1.Enabled = true; control2.Enabled = true; control3.Enabled = true; //… //controlN.Enabled = true; } } 我认为如果我们只有几个控件就可以了,但是一旦我们在Ribbon栏上添加了越来越多的控件,我不认为这样做会是一个很好的编程习惯。 有没有更干净整洁的方法呢? 我能够获得function区栏上所有控件的集合吗? 希望有人能在这里给我一些指点? 非常感谢。 编辑: 修改后的代码如下: private void tbtnLock_Click(object sender, […]

在Excel加载项中实现AppSheetChanged时启用撤消

我只注意到,当在Excel加载项中实现AppSheetChanged事件处理程序时,Ctrl-Z(撤消)function不起作用。 任何想法如何使这项工作?

DataTable到Excel范围在一个镜头?

我有一个System.Data.DataTable实例中的一些数据,并希望把它放在一个Excel表单范围,直接,一枪。 我正在使用VS 2008,我的项目是一个C#Excel 2007工作簿项目。 谢谢

如何在Excel中移动NamedRange – VSTO不是VBA

我已经拖网,根据文档,似乎没有一种方法来移动NamedRange: http : //msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.namedrange_methods (v = VS.80)的.aspx 我有下面的代码复制单元格数据的几行: activeSheet.Range[leftColumn + startRow, rightColumn + endRow].Copy(); //activeSheet.Range[leftColumn + startRow, rightColumn + endRow].Delete(); Range newRange = activeSheet.get_Range(leftColumn + (startRow + RowsToMoveDown.Count), rightColumn + (endRow + RowsToMoveDown.Count)); newRange.PasteSpecial(XlPasteType.xlPasteAll, XlPasteSpecialOperation.xlPasteSpecialOperationNone, Missing.Value, Missing.Value); NamedRange是我正在复制和粘贴的单元格,它确实将单元格值向下移动了几行,但是因为它的副本将数据留在上述单元格中,并且Delete方法会导致exception。 然而,真正的问题是我移动单元格后,我创build的NamedRange: rnArea = activeSheet.Range[leftColumn + startRow , rightColumn + (MyData.Values.Length + startRow)]; Name name = activeBook.Names.Add(uniqueName, rnArea); […]