Tag: excel interop

Excel自动化Windows服务

我有一个运行Excel Interop的Windows服务,以便自动执行各种macros。 然而,当我尝试运行使用Windows身份validation访问数据库的macros时,我正在运行一个特殊的问题… 如果macros通过Windows服务运行,则打开工作簿,并开始执行macros,但应用程序挂起(大概在数据访问部分)。 但是,如果macros通过Visual Studiodebugging程序运行,使用与服务相同的实现(它们调用相同的类库),它将执行,保存工作簿并按预期方式closures。 我敢肯定,这与模仿有关,但我似乎无法弄清楚。 我有我的用户下运行的Windows服务,我也修改组件服务默认的COM属性Impersonate而不是默认的Identify 。 任何帮助将不胜感激,因为它将是首选作为Windows服务而不是控制台应用程序运行。

Excel Interop另存为在Excel 2007中提供兼容性检查器

这里是我的SaveAs方法的代码: m_FilePath="D:\Build\abc.xlsx" m_objOpt=System.Reflection.Missing.Value; m_objBook.SaveAs(m_FilePath, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, XlSaveAsAccessMode.xlShared, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt); 现在我的问题不是如何禁用兼容性检查器,这已被多次回答。 我的问题是为什么兼容性检查器一切就绪。 excel如何知道该文件是有excel 2003的痕迹。D:\ Build是空的。

从数据表创buildExcel工作表

我正面临一个奇怪的现象。 我写了一个方法,将数据表中的值复制到Excel表单中。 问题是行被复制到列和列到行。 例如: 数据表: Item Quantity UnitPrice TotalPrice A 10 2 20 B 3 15 45 C 100 0.5 50 Excel工作表: Item Quantity UnitPrice TotalPrice ABC 10 3 100 2 15 0.5 20 45 50 我的代码: private void PopulateDataWorkSheet() { xl.Workbooks xlWorkbooks = _xlApp.Workbooks; xl.Workbook xlWorkbook = xlWorkbooks.Open(_excelFileName); xl.Sheets xlSheets = xlWorkbook.Sheets; const int […]

在.NET中查看Excel是否处于单元格编辑模式

我有一个用VB.NET编写的应用程序,通过互操作与Excel交互。 我最终遇到了单元格编辑模式的已知问题(请参阅MSDN和一些背景的计算器)。 我一直在尝试将build议的代码转换为VB.NET,但不断收到以下错误: Reference required to assembly 'office, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' containing the type 'Microsoft.Office.Core.CommandBars'. Add one to your project. (BC30652) – E:\ … .vb:3471 原来的C#代码(从前面提到的文章)如下 private bool IsEditMode() { object m = Type.Missing; const int MENU_ITEM_TYPE = 1; const int NEW_MENU = 18; // Get the "New" menu item. CommandBarControl oNewMenu = Application.CommandBars["Worksheet Menu […]

如何以编程方式检索Excel工作表中的页数?

我不是在寻找工作表的数量。 我正在查找每个工作表中的总页数。

Excel Interop – 取消select

我在Excel工作表中复制和插入行,如下所示: while (rowsToAdd > 0) { // copy the existing row insertionCell.EntireRow.Copy(Type.Missing); // location of the new row Range newRow = insertionCell.EntireRow.get_Offset(1, 0).EntireRow; // insert the new row newRow.Insert(XlInsertShiftDirection.xlShiftDown, Type.Missing); rowsToAdd–; } 我遇到的问题是,有时我在原本复制的行周围留下一个select框。 有没有办法可以取消select框(你通常用Escape键做的方式?)

通过范围对象循环excel c#

使用interop for c#我有一个范围对象,如下所示: Range rangeAToV = ws.get_Range("A1", "V1"); 我正在尝试这样做: foreach (var cell in rangeAToV.Cells) { } 这是错的吗? 我试图设置cell.value2但现在显示。

复制Excel图表并将其移动到另一个工作表

我正在使用C#Excel互操作,我想创build一个图表的副本,但我希望在另一个工作表上的副本。 我已经尝试了以下内容: Excel.ChartObject chartTemplate = (Excel.ChartObject)sheetSource.ChartObjects("chart 1"); object o = chartTemplate.Duplicate(); Excel.ChartObject chart = (Excel.ChartObject)sheetSource.ChartObjects("chart 2"); chart.Name = "Skew" + expiry.ToString("MMMyy"); range = sheetDestination.Range["T" + chartRowCoutner.ToString()]; chart.Chart.Location(Excel.XlChartLocation.xlLocationAsObject, range); 但是当我尝试这个时,最后一行会抛出一个错误: 在projectname.exe中发生未处理的“System.Exception”types的exception 附加信息:读取Excel文件时出错C:\ …文件path… \ template.xlsx:值不在预期范围内。 我也尝试传递一个表单而不是范围: chart.Chart.Location(Excel.XlChartLocation.xlLocationAsObject, sheetDestination); 但是这给出了同样的错误。 我无法理解错误的原因或如何解决它/绕过它。 我试图避免把剪贴板带入这个问题,但即使我尝试复制和粘贴,我仍然只能将其粘贴为图像,这实际上并不理想: Excel.ChartArea chartArea = chart.ChartArea; chartArea.Copy(); range = sheetDestination.Range["T" + chartRowCoutner.ToString()]; // Note that chart is […]

在Excel文件中设置表格的范围

我在Microsoft Dynamics AX 2009中生成了Excel文件。我想从第9行的Excel中创build一个表格。 即使我设置了一个范围,表总是显示在单元格A1。 SysExcelRange xlsRange; SysExcelListObject listObj; #define.ListObjectName("xlGuess") … xlsRange = xlsWorkSheet.range("A9"); listObj = xlsWorkSheet.listObjects().add(xlsRange, #ListObjectName); 我也尝试过设置像“A9:E13”和“A9:A13”的全部范围,但它也没有工作。 也许可以用COM对象来完成,但是我不能实现它。 为什么它不起作用?

如何在Excel中读取DateTime Interop C#

可能重复: 读取date时间值从Excel工作表中读取 我正在尝试使用C#中的Interop在Excel电子表格中读取date时间值。 我有时间在我的工作表的“C”栏。 我的代码如下: public void addTime(Microsoft.Office.Interop.Excel.Workbook workbook) { Excel.Worksheet ws = (Excel.Worksheet)workbook.Worksheets.get_Item("Time Series"); Excel.Range range = ws.UsedRange; int num = 0; for (int row = 1; row <= range.Rows.Count; row++ ) { String dtString = ((Excel.Range)ws.Cells[row, "C"]).Value2.ToString(); DateTime dt = Convert.ToDateTime(dtString); this.addEdgeInstance(dt); } } 然而这在当时并没有被读懂。 读取string的工作,但转换function不起作用。 我是否以不同的方式阅读价值观? 数值可以变化吗? (IE:我可以input“11/11”还是“2011/11/11”,因为在Excel中工作时,Excel将这两个条目都识别为valie DateTime值)?