Tag: excel interop

我如何从单元格获得字符数

目标:我正在尝试为我的Excel 2016 VSTO插件添加一项function。 该function将从活动工作表获得1列,并根据string长度更改背景颜色。 问题:我无法从单元格获取string长度。 我无法找出正确的语法,我目前有var count = row.Item[1].Value2.Text.Length; 代码:这是我的 public void CharacterLengthCheck(int length = 24, int Column = 3) { Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet; var RowCount = sheet.UsedRange.Rows.Count; Range column = sheet.Range[sheet.Cells[1, Column], sheet.Cells[RowCount, Column]]; foreach (Range row in column) { var count = row.Item[1].Value2.Text.Length; if (count > length) { row.Item[1].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); } […]

C#.NET Excel问题。 应用程序在Excel中处理.txt文件并上传到SharePoint

在这里黑暗中射击… 我有一个C#.NET应用程序解压缩一组.txt文件,将其转换为.xlsx并将其上传到SharePoint。 当强制系统更新被推送到我的电脑并且应用程序不再工作时,应用程序正在运行。 看来我的机器不能再操纵excel了。 我们正在使用Microsoft.Office.Interop.Excel命名空间。 有什么我可以检查我的机器本身可能是腐败的,不允许excel被操纵? 相同的代码在同一台机器上工作,并已工作多年。 我已经重新安装了应用程序和Microsoft Office。 我得到的错误是在下面。 我可以提供有关代码的任何特定部分的其他信息,但这似乎是我的机器而不是代码的问题。 System.IO.FileNotFoundException: Could not find file 'C:\Extracts\alwilliams3\Files\XLSX\TIMESHEET_EXTRACT(26_Jun_17- 1032AM).xlsx'. File name: 'C:\Extracts\alwilliams3\Files\XLSX\TIMESHEET_EXTRACT(26_Jun_17-1032AM).xlsx' at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess […]

Excel Addin启动事件。 获取打开工作簿path

我需要使用Interop拦截Excel Addin的StartUp事件,并根据commandLine参数修改excel的打开。 我唯一缺less的是excel打开的文件的path。 我无法findcommandLine参数之间的path,也不能使用ActiveWorkbook.Path属性,因为我已经尝试过,并且在启动方法的执行过程中没有工作簿是活动的(因此我只得到一个exception)。 我如何获得这些信息? (要清楚,我期待find一个类似于以下内容的GetCommandLineArgs内容: [0] "C:\Program Files\etcet\EXCEL.EXE" [1] "C:\Users\Myself\Documents\ExcelDocINeeToOpen.xlsx" [2] "-Embedding" 但我只看到应用程序的path和另一个parm,而不是打开文件的path。 谢谢

Excel Interop – 在图表中隐藏类别

我正在寻找一种方法来隐藏/禁用图表上的某些类别。 (Y轴) 这是如何与filter一起工作的: 有谁知道我可以用.NET Interop做到这一点?

使用c#excel interop切换图表的行/列

我目前正在使用Excel Interop创build报告的程序。 所以我打算创build一个折线图如下: 正如我们在这里可以看到的,我们已经清楚地发现了与里程碑相关的数字和数字。 当我在Excel中手动select我的值为chartRange时,我收到这个Diagramm。 但是,当它以编程方式(select完全相同的范围),我得到这个: 那么,你可以看到select的数据。 Excel(或者我不知道的东西)不能识别里程碑行作为轴。 当我右键单击Diagramm – >select数据 – >更改行/列我得到我的权利图表。 现在有没有人知道命令切换这些行/列或某种方式来定义每个轴的范围? 我在这里附上我的代码的相关部分: Excel.Application myExcelApplication; Excel.Workbook myExcelWorkbook; object misValue = System.Reflection.Missing.Value; myExcelApplication = null; myExcelApplication = new Excel.Application(); myExcelApplication.Visible = true; myExcelApplication.ScreenUpdating = true; myExcelWorkbook = (Excel.Workbook)(myExcelApplication.Workbooks.Add(misValue)); Excel.Worksheet newWorksheet; newWorksheet = (Excel.Worksheet)myExcelApplication.Worksheets.Add(); newWorksheet.Name = requestedVehicles[m]; newWorksheet = (Excel.Worksheet)myExcelWorkbook.ActiveSheet; Excel.Range chartRange = myExcelApplication.get_Range("B2", endrange […]

C#Excel单元格内容部分删除

有没有人有任何想法在Excel中检测特定单元格的数据是部分删除? 我努力了 : cell.IsStrikeThrough = System.Convert.ToBoolean(rowFound.Font.Strikethrough); 单元格只是一个结构对象,rowFound是Excel.Range对象。 这行代码工作正常,如果rowFound的内容是完全删除或不罢工。 但是当涉及到部分删除的单元数据时,它将返回一个System.DBNull。 欣赏是否有人可以提供一个想法或例子来检查一个单元格中的内容是否是部分删除,以及如何确定单元格开始删除的字符。 非常感谢你!

在Visual Studio中运行testing会导致Excel错误

我使用C#与Selenium进行testing,Excel Interop则报告testing结果。 当我在Visual Studio中运行我的testing时,它显示以下错误: 点击Debug,打开Visual Studio Just-In-Time Debugger,当我debugging时,我得到以下消息: 0x7c812afb在excel.exe中的未处理的exception:0xe0000002:0xe0000002。 excel.exe [3920]中发生未处理的win32exception。 有没有人遇到这样的错误? 任何人都可以build议我解决这个问题吗? 提前致谢。 事件查看器显示:错误应用程序excel.exe,版本12.0.6545.5000,邮票4c654035,错误模块ntdll.dll,版本5.1.2600.6055,邮票4d00f27d,debugging? 0,故障地址0x00019af2。

在使用Interop的客户机上节省成本

我正在使用Interop Excel来自动化C#代码中的excel,但是在保存的时候,我希望它应该给用户一个popup窗口(就像我们从互联网上下载一个带有打开和保存选项的文件一样) 我已经尝试了以下,但它只保存在服务器的硬盘上 xlWorksheet.Save(); xlWorksheet.SaveAs(parameters); 任何人都可以sugget什么可以做( 请参阅:我不想使用文件stream )

检索不够宽的excel单元格文本

我想读取excel的显示值,而不是excel内部保存的值。 问题是,当这个值比单元格更宽时,单元格显示####### ,这在Excel中是可以的。 但是我想从excel API中读取这个值。 当我访问属性范围。 文本我也获得价值######## 。 有没有一种方法可以获得当单元足够宽时显示的值? 即第三个属性,而不是Value2或Text 。 我的同事说excel中有三个值,一个是内部值,excel是如何表示单元格的值,一个是当前显示的,一个是空间足够的时候会显示什么,对不对? 如果这是不可能的,我有另一个可能的解决scheme。 我使用AutoFit()方法使单元足够宽,我读取价值。 但问题是我不想改变列的宽度。 有没有办法记住宽度,然后改变宽度,所以我可以读取单元格,并返回到以前的宽度? 或者,也许我应该以某种方式将格式化选项应用于单元格的值来获取将显示的内容? 如何解决这个问题?

为什么openfiledialog导致excel被添加到任务pipe理器进程?

为什么这会导致excel的发生? OpenFileDialog openFileDialog1 = new OpenFileDialog(); DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. if (result == DialogResult.OK) // Test result. { //EXCEL.EXE *32 is now showing in the task manager! 我正在从openfiledialogselect一个XLSX文件,如上所示,我看到任务pipe理器中的进程。 有人可以告诉我这怎么可能?