Tag: interop

从子节点查询xml父节点属性

我正在使用一个类似于这样的XML: <?xml version="1.0" encoding="utf-8"?> <Results> <Pattern Name="Substitution"> <TestList> <Test> <Inputs> <Variable Name="A" Value="-1" /> <Variable Name="B" Value="20" /> </Inputs> <Outputs> <Variable Name="A" Value="-1" /> <Variable Name="B" Value="20" /> </Outputs> </Test> <Test> <Inputs> <Variable Name="A" Value="-1" /> <Variable Name="B" Value="20" /> </Inputs> <Outputs> <Variable Name="A" Value="-1" /> <Variable Name="B" Value="20" /> </Outputs> </Test> </TestList> </Pattern> <Pattern […]

Excel Interop“新增”对象

我正在开发一个MVC应用程序,用户可以上传一个Excel文档并输出HTML,但是我对Interop库有些困难,希望有人能帮忙。 为了保持这一点非常简单,我已经达到了要实例化或“新build”工作表的阶段,并使用所选表单的ID。 用户已经select了他们希望使用的工作表,但是似乎没有任何这样做的方法。 我尝试过的代码,如workbookModel.workbook.Sheets.get_Item(1); 这应该得到模型中的当前工作簿,并得到ID为1的工作表 – 我相信这是基于1的索引,而不是基于0。 请记住,我有一些viewModels在播放上述代码,但我真的在这里做的是Workbook work = new Workbook().Sheets.get_Item(1); 我也试过Workbook work = new Workbook().Worksheets.get_Item(1); 万一我错误地使用工作表,而不是工作表,但我不相信。 但我没有试过似乎工作。 如果任何人都可以指出我将正确的方向,将不胜感激,如果这没有意义,你需要更多的信息,请让我知道。 非常感谢

Excel工作表SelectionChange事件不会被第一次触发,但第二次工作

我在我的excel插件中有一个winform对话框,点击面板buttonpopup。 我有一个select更改事件添加到工作表。 事件不是第一次被解雇。 我必须closures对话框并再次打开它,这次它将工作。 我在这里错过了什么,或者它是与Excel Interop API的错误? 环境:Excel 2007,.NET 4.0,Interop运行时:v1.1.4322 以下是代码 public partial class CreateColumn : Form { public CreateColumn() { InitializeComponent(); Excel.Worksheet ws = Globals.ThisAddIn.Application.ActiveSheet; //Bug: this event does not fire the first time.. works on second time. ws.SelectionChange += new Excel.DocEvents_SelectionChangeEventHandler(ColRangeSelChange); } public void ColRangeSelChange(Excel.Range target) { System.Windows.Forms.MessageBox.Show(target.AddressLocal); }} 这是如何创build列被调用 private void smartTemplateBtn_Click(object […]

Excel C#Interop – 将选定的范围仅限于填充的单元格

我有一个VSTO解决scheme,纠正突出显示的单元格中的数据。 我遇到的问题是,如果用户select整个行/列,程序循环通过成千上万的空单元格,处理最后一个填充的单元格很长时间。 我的代码如下所示: var addIn = Globals.ThisAddIn; Excel.Worksheet sheet = addIn.Application.ActiveSheet; Excel.Range range = addIn.Application.Selection; foreach (Excel.Range cell in range.Cells) { var val = cell.Value2; if (val == null) continue; 我已经看到如何使用线程: AdvancedFilter(Excel.XlFilterAction.xlFilterInPlace, Type.Missing) 但我似乎无法把两者联系起来。 我希望我的“范围”对象仅限于填充单元格,或者当超过最后一个值时能够将我的foreach循环短路。 我想到做这样的事情: if (cell.Row > populatedRange.Row || cell.Column > populatedRange.Column) break; 但是,如果select了除整行/列以外的其他选项(用户select填充范围之外的单元格,并忽略所有后续填充的单元格),则这可能会破坏代码。 我知道我错过了一些简单的事情,但是我的尝试(和search)还没有得出答案。

Excel Interop和CSV文件的date转换问题

我有一个CSV文件,其中包含格式为m / dd / yyyy的date如下 1/06 / 2013,15,1,1 / 06/2013 0:15,1,6.44 当我在Excel中打开文件时,date正确转换 – 1/6/2013有数字值41,426.00和MONTH()函数返回6。 当我使用Microsoft.Office.Interop.Excel打开使用Open()或OpenText()方法相同的文件date被转换为41,280.00(6/01/2013)。 你可以打开一个CSV文件使用Microsoft.Office.Interop.Excel,以便它打开相同,如果用户从Windowsshell打开文件? 问候戴夫

尝试使用Microsoft.Office.Interop.Excel.Workbooks.Open()打开Excel时exceptionHResult 0x800a03ec

如果我尝试在客户机上打开一个excel文件,就会抛出exception: Exception from HRESULT: 0x800A03EC 内部例外:(空) 堆栈跟踪: at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad) at (own assembly) 这HResult是一个非常通用的错误,我找不到任何有用的信息。 我的设置: 在Windows服务中运行的WCF服务。 完全相同的安装程序正在其他三台机器上工作。 我可以排除的事情: 错误的path 文件不存在 文件已损坏 文件被写保护 我做的事情: 创build桌面文件夹,如下所示(第二个答案) https://social.msdn.microsoft.com/Forums/vstudio/en-US/4d6c383a-94eb-4898-9d22-aa4bb69be25b/ 给桌面文件夹“每个人”或“Jeder”权限(德文中的“Jeder”相当于“Everyone”) 用currenlty活动用户启动服务 […]

Excel Interop Range.Replace方法不起作用

我正在尝试编写一个C#方法,它将从Excel电子表格中删除所有字符集合的实例。 使用Range对象的Replace方法似乎是最有效的方法,而不是遍历每个单元格。 以下是我正在处理的内容: 范围扩展方法: public static void ReplaceChars(this Range me, String toReplace, String replacement = "") { //App is a static reference to the active Excel instance. //Alerts must be suppressed for characters that are not present in data. App.DisplayAlerts = false; for (Int32 i = 0; i < toReplace.Length; i++) { me.Replace( //I'm using […]

C# – 使用Interop命名空间删除Excel行

我正在searchC#的方式删除(空)工作表中的Excel行而不使用Microsoft.Office.Interop.Excel命名空间。 find很多像C#这样的Interop命名空间和excel删除行的例子。 但有没有办法做到这一点,没有第三方工具 – 只有与.NET? 感谢您的帮助!

Microsoft Interop Excel:在下一个打印页面上写入数据

我想写两个数据集到这样的Excel表 DATASET1 HEADER1 | HEADER2 | HEADER3 | … | ========|=========|=========|====== DATA11 | DATA12 | DATA13 | … | … DATASET2 HEADER1 | HEADER2 | HEADER3 | … | ========|=========|=========|====== DATA11 | DATA12 | DATA13 | … | … 其实这并不是一件困难的事情,因为你可以简单地遍历数据集,并且需要确保你的指针是正确的。 但现在我想确保第二个数据集的标题和数据将在下一个打印页面区域,以确保标题和数据在同一页面上(例如,创build一个PDF文件)。 在Word / LaTeX是命令/macros来启动一个分页符。 Excel中有类似的东西吗?

C#Interop格式validation列表

我实现了一个代码,将数据validation添加到指定范围的单元格中,但是包含的值被分块化。 这是我的代码 var listFormats = new List<string>(); listFormats.Add("US punctuation + alphanumeric lowercase:[a-z0-9,.?;:!&()_'" + '"' + "]+"); listFormats.Add("US punctuation + alphanumeric uppercase:[A-Z0-9,.?;:!&()_'" + '"' + "]+"); listFormats.Add("US punctuation + alphanumeric mixedcase:[A-Za-z0-9,.?;:!&()_'" + '"' + "]+"); var flatListFormats = string.Join(",", listFormats.ToArray()); rng.Validation.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertInformation, XlFormatConditionOperator.xlBetween, flatListDelimiters, Type.Missing); 这是我在validation列表中得到的: 代替 US punctuation + alphanumeric lowercase:[a-z0-9,.?;:!&()_'"]+ US punctuation + alphanumeric […]