Tag: office interop

完成粘贴操作后,在工作簿中检测新形状的正确方法

所以我现在正在做这个… //Codeblock edited to include otaku upgrade const String GIFpastespecialformat = @"Picture (GIF)"; const Int32 Onemoreshape = 1; Int32 shapeCount = sht.Shapes.Count; WorksheetPasteSpecialArgs wspa = new worksheetpastespecialargs(); wspa.Format = GIFpastespecialformat; wspa.Link = False; wspa.DisplayAsIcon = False; List<Int32> oldShapes = new List<Int32>(); foreach (var item in sht.Shapes.Items()) { oldShapes.Add(Item.ID); } sht.PasteSpecial(wspa); if((shapeCount + Onemoreshape) == sht.Shapes.Count) […]

使用Office 2007 PIA与Excel 2002(主互操作程序集)

这可能吗? 我的应用程序引用了Excel 2007主互操作程序集。 我可以在只安装了Excel 2002(XP)的PC上安装这些软件吗? 还是我需要Office XP PIA? 在那种情况下,是否需要修改我的程序来引用旧的PIA?

将字节数组复制到具有多个工作表的Excel文件

我对C#有点新鲜。 我面临的问题是,我需要复制一个多字节excel作为字节数组检索到另一个Excel使用C#。 如何做到这一点?

VSTO在代码ADDIN NOT LOADED中启动EXCEL

我使用以下代码从代码启动Excel: var excelApp = new MSExcel.Application { Visible = true }; excelApp.Workbooks.Add(); excelApp = null; 我已经添加了第二行,因为如果没有它,Excel会在启动器closures时自动closures。 当我添加新的工作簿时,它保持活跃。 不过,我的加载项与发射器没有任何关系。 有什么build议么 ? 谢谢你的build议。

使用C#在Excel中对多个列进行sorting

我需要使用C#在Excel中的多个列进行sorting。 我正在使用Microsoft.Office.Interop.Excel做这个。 但Range.Sort允许我sorting只有三列。 我想分三个以上的列? 有没有办法,我可以使用Excel.Range.Sort方法来sorting超过三列?

检查excel 2010 bitness

是否有可能使用在kernel32.dll中定义的getBinaryType()函数来获取office 2010 bitness。 [DllImport("kernel32.dll")] static extern bool GetBinaryType(string lpApplicationName, out uint lpBinaryType); uint type; GetBinaryType("applicationName",out type); 我曾尝试使用应用程序类如下所述,但有时它会失败。 public static ExcelVersion GetExcelVersion(object applicationClass) { if (applicationClass == null) throw new ArgumentNullException("applicationClass"); PropertyInfo property = applicationClass.GetType().GetProperty("HinstancePtr", BindingFlags.Instance | BindingFlags.Public); if (property == null) return ExcelVersion.Excel; return (System.Runtime.InteropServices.Marshal.SizeOf(property.GetValue(applicationClass, null)) == 8) ? ExcelVersion.Excel2010_64 : ExcelVersion.Excel2010_32; } 有没有其他办法来检测Office 2010的位数?

重新连接到断开的Excel COM互操作实例

我有一个第三方应用程序,使用Excel COM Interop将数据导出到Excel。 他们的程序中存在一个错误,导致它在使Excel实例可见之前失败。 但是,从发生exception的位置开始,根据显示的堆栈跟踪,我需要的信息已经写入Excel工作表。 有没有办法使用Microsoft.Office.Interop.Excel命名空间连接到一个现有的 Excel实例,而不是它自己生成? 或者有没有其他办法可以让孤立的Excel实例可见,这样我就可以保存它完成了什么? 请注意,程序closures后,EXCEL.exe在任务pipe理器中仍然可见,因此在应用程序断开连接后实例仍处于运行状态并正在运行。 更多细节 :程序正在做的是从它自己的(专有的)数据库中导出一个报告,然而由于某些原因,数据库中的一些logging变得格式错误,导致在生成报告时发生Integer Overflow错误。 查看堆栈跟踪,看起来这个整数溢出在报告结束时产生总结。 对于我的用途,我不需要摘要只是报表中的行项目,所以我希望看到它迄今为止所做的工作,但它正在与之通信的EXCEL.exe实例不可见。 如果我为不同的date范围运行报表,那么报表就会生成正确的报表,这只是关于一天中某条logging导致此特定input集合失败的原因。 与应用程序提供商的支持合同过期和pipe理没有兴趣更新它,因为我们正在切换到新的供应商(这就是为什么报告正在生成,用作数据源数据转换)。 所以我一直负责“修复”,这样数据就可以移走了。 最后更新 :我问这个问题的原因已经解决了。 我能够通过程序本身去查看每条logging,并且我发现有一个字段设置为16274176.00的logging(正常值在100年代(不要问我为什么看起来是一个浮点数导致Integer Overflow错误)),一旦我将其更改为0.00报告打印罚款。 不过,我仍然想知道是否有我的原始问题的答案,因为我认为这将是我的工具箱中的一个有用的工具。

获取工作表的名称C ++ / CLI

如何在Excel工作簿中使用C ++ / cli获取工作表的名称? 我明白,当你使用C#你可以这样做: Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1); string strWorksheetName = worksheet.Name; 虽然我不知道该怎么做: Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1); 在C ++中。

在Excel中使用Excel Interop提交对excel文件的更改

我仍然坚持在这个代码和错误不断显示..我有excel文件,是近24列,我想适应它到一个7列excel文件,因为我只有7个工作的软件,我不'不想从头开始编写软件,所以你会看到一些删除和列的isertion。 我有这个Excel文件中有5个列,有“x”值或null。 我想要做的是在范围A1和B1之间创build一个名为category的新列,所以如果列5中有一个x,我在类别字段中写入E,否则如果x在第6列然后我在类别列中写P ..等等。 然后我需要删除这些不再需要的5列(范围E1:I1) 问题是,当我debugging代码,我可以看到值,[]具有列插入,并已正确传输的值,但是当temp_data.csv产生,它有删除后新的Excel文件,所以现在它包含11列,但新的类别列连同值不存在… Microsoft.Office.Interop.Excel.Workbook workbook = xl.Workbooks.Open(p_sUBKPath, Type.Missing, false, 4, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1]; Microsoft.Office.Interop.Excel.Range range = ws.UsedRange; // delete columns that we don't need from the new excel file Microsoft.Office.Interop.Excel.Range range2 = ws.get_Range("A1","A1"); range2.EntireColumn.Delete(); Microsoft.Office.Interop.Excel.Range range3 = ws.get_Range("B1", "B1"); range3.EntireColumn.Delete(); […]

TFS没有findOffice程序集

我的项目引用了Microsoft.Office.Interop.Excel和其他一些基于Office的程序集。 什么是最好的方式来让TFSfind这个程序集? 我宁愿避免必须在生成服务器上安装完整的Office ,因为我不确定这是否能解决问题,但我找不到任何forms的运行时库。 我曾尝试将Office程序集添加到项目中的Libs文件夹中,并引用这些二进制文件,但引用path与项目无关。 这是一个问题,因为生成服务器和本地计算机上的目录是不同的。 你有什么build议? 我得到的错误是: c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(1605):无法parsing此引用。 无法find程序集“Microsoft.Office.Interop.Excel,版本= 14.0.0.0,文化=中性,PublicKeyToken = 71e9bce111e9429c,processorArchitecture = MSIL”。 检查以确保程序集存在于磁盘上。 如果您的代码需要此引用,则可能会出现编译错误。