Tag: 互操作

使用VB区分来自C#Interop或Excel程序的xlsx事件

我有一个事件,我想要在用户closures.xlsx文件时触发。 我也有一个C#程序定期检查同一个文件中的内容。 我遇到的问题是,当我的C#程序(使用Interop)closures.xlsx文件时,它会触发我的VB代码。 有没有办法隔离对Excel文件的访问,以便我知道它是在Excel程序中编辑的? 我只想让用户在Excel中编辑文件时触发我的VB代码。 谢谢

创build高级filter

我想在C#中创build一个Excel中的高级filter,以将独特的数据从一张表复制到另一张表,至less我在Excel中得到它,如果我使用这样的Interop: Excel.Range rang = sheet2.get_Range("A2"); Excel.Range oRng = sheet.get_Range("I2", "I" + (lst.Count + 1)); oRng.AdvancedFilter(Excel.XlFilterAction.xlFilterCopy, CriteriaRange: Type.Missing, CopyToRange: rang, Unique: true); 工作正常,但我正在做我所有的EPPlus应用程序,如果没有Interop可以做同样的事情会更好。 那么有可能?

C#Excel实例可见为false,并在应用程序之外打开文件

在我的应用程序中,我创build了一个excel文件。 为了实现这一点,我创build了一个Microsoft.Office.Interop.Excel.Applicationvariables,并将其Visible成员设置为False。 当我这样做,我看到我的EXCEL.EXE进程在任务pipe理器。 问题是我必须让这个variables在整个应用程序执行生命周期中生效。 所以当我在这个应用程序之外打开一个excel文件时,它使用已经存在的Excel实例,并且由于我在创build时将Visible设置为false,所以我看不到我打开的文件。 有什么办法可以在我的应用程序中创build我的Excel实例,同时说:“不要让这个实例在应用程序之外使用,如果有人想打开一个Excel文件,它不能使用这个实例,它必须创build一个新的Excel实例“? 谢谢 internal Application _application; _application = new Application() { Visible = false, DisplayAlerts = false, ScreenUpdating = false };

C#Interop名称在当前上下文中不存在

我正在使用C#Interop从Excel工作表取得值取决于传递给一个函数的参数,我得到以下错误: 当前上下文中不存在名字“表” 这是我的代码: public void getIndexes(int num) { var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; var wsEvars = wb.Sheets["Evars"]; var wsEvents = wb.Sheets["Events"]; if (num == 0) { var sheet = wsEvars; } if (num == 2) { var sheet = wsEvents; } if (num != 2) { var rng = (Excel.Range)sheet.Range[sheet.Cells[3, 2], sheet.Cells[3, 25]]; } } 我想应该在第一个if语句之前初始化sheetvariables…但是应该是这个variables的types,因为它是一个COM对象?

C#Interop获取来自特定列的数据的最后一行

我试图从特定的列中获取数据的最后一行,并且在运行我的代码时出现以下错误: 无法获取WorksheetFunction类的CountA属性 var xlApp = new Microsoft.Office.Interop.Excel.Application(); var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; var wsConfig = wb.Sheets["Config"]; var usedRows = xlApp.WorksheetFunction.CountA(wsConfig.Columns[9]); 还尝试了下面的代码,但返回: 来自HRESULT的exception:0x800A03EC var usedRows = wsConfig.Range["I1", wsConfig.Cells[1, wsConfig.Rows.Count]].End(Excel.XlDirection.xlDown).Value; 例: 第一栏 | 1 | | 2 | | 3 | | 4 | | 5 | | | => usedRows = 5因为列I上有5行数据

C#Interop将数组数组写入工作表

我想写一个2d数组到工作表,我得到以下错误: 指定的数组不是预期的types。 这是我的代码: string[][] allEvars = new string[evars.Count][]; for (var i = 0; i < evars.Count; i++) { var evarsList = new List<string>(); evarsList.Add(evars[i].id.Value); evarsList.Add(evars[i].name.Value); if (evars[i].enabled != null) evarsList.Add(evars[i].enabled.Value.ToString()); else evarsList.Add(""); if (evars[i].description != null) evarsList.Add(evars[i].description.Value); else evarsList.Add(""); string[] evarsArray = evarsList.ToArray(); //var range = (Excel.Range)wsEvars.Range[wsEvars.Cells[i + 5, 2], wsEvars.Cells[i + 5, evarsArray.Length]]; //range.Value […]

如何在excel中alignment图片

我使用下面的代码在Excel单元格中插入图像,但结果不被忽视 bitmap[] ImageArray = GetImageArray(); bitmap currvalue = null; System.Windows.Forms.Clipboard.SetDataObject(ImageArray[0], true); currvalue = ImageArray[0]; currentRange.Cells.HorizontalAlignment =Excel.XlHAlign.xlHAlignCenterAcrossSelection; currentRange.Cells.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter; excelWorkSheet.Paste(currentRange.Cells, currvalue); excelWorkSheet.Columns.AutoFit(); 这是输出 我不能使用objSheet.Shapes.AddPicture(); 我想要图像中心alignment

无法将更改保存到Excel文件(C#/)

我一直在试图修改一个名为“Hoja de Resultados”的Excel文件,每次在Visual Studio(C#)中添加三个不同的variables(Puntuacion = Score,Fecha = Date,Hora = Time)。 Excel表格链接到一个DataGridView窗口,每更新一次值就更新一次。 问题是,当Excel表格中的行less于3行时,程序将停止修改XLSX,有时会在“Program.cs”中引发看似随机的exception。 string Direccion = "G:\\Archivos\\Programación\\Visual Basic\\UVG\\Microcontroladores – Proyecto Final Comunicación Serial\\Hoja de Resultados.xlsx"; Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook Hoja = ExcelApp.Workbooks.Open(Direccion); Microsoft.Office.Interop.Excel.Worksheet HojaActiva = ExcelApp.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet; Excel.Range Rango = HojaActiva.UsedRange; int Posicion = Rango.Rows.Count; int NuevaPosicion = Posicion + 1; HojaActiva.Cells[NuevaPosicion, 1] […]

同时复制多个工作表以保留图表参考

我在Excel中创build了一个双工作表模板 – 第一个工作表用于漂亮的图表,另一个表单用于驱动这些图表的数据。 我已经写了一个vb.net 2005应用程序,可以转储在第二个工作表上的所有数据,图表工作表完美地更新。 我想在同一本工作手册上多次做这个报告。 (所以这些标签会显示“Person1 – Chart”,“Person1 – Data”,“Person2 – Chart”,“Person2 – Data”等) 我的解决scheme是,对于每个要运行此报表的人员,请复制图表模板,然后复制数据模板。 问题是创build的每个图表模板都指向原始数据工作表。 我怎样才能设置每个图表工作表指向什么工作表? 有办法复制成对的工作表,保持与他们自己的关系,而不是父母的关系?

使用vb.net在Excel中获取范围地址

我想dynamic获取使用VS 2005 vb.net的Excel中的单元格的范围。 这工作oRange = oSheet.Range(oSheet.Cells(“A1”),(“U281”))。select,但“U281”不会一直是范围内的最后一个单元格。 那么我将如何dynamic地获取与U281相同格式的数据的最后一个单元格。