为什么Excel.WorkSheet.Copy会抛出类型为'System.Runtime.InteropServices.COMException'的第一次机会异常,HRESULT:0x800A03EC
我正在与.net中的excel Interop一起玩,在那里我在" excel._worksheet.copy(type.missing,type.missing)"上遇到cosxception. 行为非常奇怪:我正在从基于模板的.xls中复制工作表并生成带有指定工作表的新工作簿(可能是用户从GUI中选择的).一旦遇到excel._worksheet工作表. "发生的第一个机会'system.runtime.interopservices.comexception'发生了. 其他信息:Hresult的例外:0x800A03EC" 以不同的方式进行了实验后,我将手动指定的工作表复制到了Excel的另一个新创建的实例,并将本工作簿作为同一代码的来源.在这里,效果很好!它通过打开一个新的Excel实例创建了一个精确的副本,但我也不例外. 我不知道为什么会发生这种行为?它是否与该工作表中的内容有关,如果是这样,则将同样的工作表复制到另一个新创建的空白工作表中,并且一
44 2024-04-26
编程技术问答社区
如何使用excel的rowindex将特定的excel行插入到datagridview?
我正在使用小C#应用程序在Excel workbook中进行搜索 使用以下方法 public void SearchExcelFiles(string FilePath) { string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\";"; Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook oWB; Microsoft.Office.Interop.Excel.Range currentFind = null; Micro
30 2024-04-26
编程技术问答社区
如何防止粘贴的图像溢出其边界?
我将图像插入这样的Excel范围: private System.Drawing.Image _logo; public ProduceUsageRpt(..., System.Drawing.Image logo) { . . . _logo = logo; } . . . var logoRange = _xlSheet.Range[ _xlSheet.Cells[LOGO_FIRST_ROW, _grandTotalsColumn], _xlSheet.Cells[LOGO_LAST_ROW, _grandTotalsColumn]]; Clipboard.SetDataObject(_logo, true); _xlSheet.Paste(logoRange, _logo); 不幸的是,该图像对于该范围太大(当前第1行到第4行,第16列).它没有做礼貌的事情并缩小自身以适合规定的边
18 2024-04-26
编程技术问答社区
从进程开始,以只读方式打开EXCEL文件
我必须使用Process.start方法打开Excel应用程序.当前代码在下面. startInfo.FileName = "EXCEL.EXE"; startInfo.Arguments = "\"C:\\Shared\\Some Directory\\File Name 2016.xlsm"; var res = Process.Start(startInfo); 我只需要读取对文件的访问.但是,如果另一个用户打开文件,请弹出窗口提示,询问我是否想以仅读取模式打开文件.无论如何,是否有使用该过程.开始方法可以指定只需读取文件? 我已经阅读了有关使用动词的信息,但是我认为我缺少某些东西. 解决方案 文档链接 只使用/r键: startInfo.FileName = "EXCEL.EXE"; startInfo.Arguments = "/r \"C:\\Shared\\Some Directory\\F
14 2024-04-26
编程技术问答社区
Excel互操作在我的数字格式化字符串中添加斜线
我正在尝试将数字格式(南非兰德货币,没有小数)设置为这样的范围: range.NumberFormat = "_ R * # ##0_;"; 其中range是类型Microsoft.Office.Interop.Excel.Range 但是,当我打开电子表格并通过选择自定义格式的字符串现在看起来像这样的字符串时: _ \R * #\ ##0_; ,这些添加的斜线意味着只有前一千个分离器(一个空间),其余的则留下. 我也尝试过: range.NumberFormat = @"_ R * # ##0_;"; 我尝试了MSDN,但此副doc对我来说像Gibberish一样: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.numberformat.aspx ,但它做同样的事情.有人知道如何防止这种情况发生吗? 解决方案 设置Numbe
6 2024-04-26
编程技术问答社区
在Excel-DNA中,右键点击电子表格中的单元格,在上下文菜单中添加新的行
我将在Excel-DNA中进行以下操作: 对于任何工作簿,在任何工作簿中引用XLL ",当单击"某物"时,它将打开"表单"(例如,输入中有两个数字或任何内容). excel-dna是不可能的(我在github上挖掘了excel-dna源代码,我看不到与上下文菜单有关的任何内容),我愿意与excel-Interop一起做. 解决方案 对于Excel 2010+,上下文菜单也可以在功能区中定制 xml. [.....]
6 2024-04-26
编程技术问答社区
使用vb.net core 8.0其中microsoft.office.interop.excel不适合MS Excel 2016
在我的控制台应用程序中,我想使用microsoft.office.interop.excel库.我使用 Visual Studio 2022 和 Microsoft Office 2016 .我添加了一个参考 microsoft.excel 16.0对象库,在我的班级中,我添加了excel = microsoft.office.interop.interop.excel,安装 microsoft.office.interop.interop.interop.excel.excel nuget包裹;当我单击构建时,它不会显示任何错误,并告诉构建完整,但是当我运行应用程序时,我会在Break Mode中遇到此错误 System.IO.FileNotFoundException: 'Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e94
20 2024-04-26
编程技术问答社区
在excel工作表中使用c#中的interop-excel时,Smartart节点被错误地添加。
我有一个C#控制台应用程序,该应用程序创建了一个具有Hiecheny Layout(org Chart)的SmartArt对象的Excel工作表.当我继续向SmartArt对象添加节点时,它将节点放在不正确的级别中. 创建的第一个节点称为"节点1",并正确放置在第一级.然后,我创建4个新节点(节点1.1,节点1.2,节点1.3,节点1.4),从第一个节点放置在第二个节点,将节点1作为父节点.我还创建了一个第三级节点(节点1.1.1),将节点1.1作为parentnode. . 我以某种方式得到以下结果: 这是预期的结果: 这是我的代码: private static Excel.Workbook Wb = null; private static Excel.Application Xl = null; private static Excel.Worksheet Sheet = null; static void Main(stri
14 2024-04-26
编程技术问答社区
从dataGridView创建一个Excel文件
我在WindowsForms中有一个DataGridView.我想要一个按钮将此DataGridView导出到Excel工作表. using Excel = Microsoft.Office.Interop.Excel; Excel.Application ExcelApp; Excel.Workbook ExcelWorkBook; Excel.Worksheet ExcelWorkSheet; ExcelApp = new Excel.Application(); ExcelWorkBook = ExcelApp.Workbooks.Add(Missing.Value); ExcelWorkSheet = (Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1); try { for (int i = 0; i
12 2024-04-25
编程技术问答社区
修改用于打开现有文件的Interop Excel
我正在使用C#的Excel Interop导出DataGridView以进行Excel和打印.我正在使用此代码: try { Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Application.Workbooks.Add(true); int ColumnIndex = 0; int rowIndex = -1; foreach (DataGridViewRow row in dataGridView1.Rows) { rowIndex++; ColumnIndex = 0; foreach (DataGridViewColumn col in data
6 2024-04-25
编程技术问答社区
从进程ID中检索Excel应用程序
我正在使用Process类启动Excel应用程序.我能够使用以下代码获得流程ID和主窗口句柄. Process xlP = Process.Start("excel.exe"); int id = xlP.Id; int hwnd = (int)Process.GetCurrentProcess().MainWindowHandle; 因此,这启动了Excel应用程序.如何使用流程ID和主窗口句柄引用Excel的此特定实例? 我在这里看到了类似的问题,但是答案是指向不再存在的网页的链接. 我基本上想要下面的东西. oExcelApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); 请不要使用Process.Start方法开始使用Excel应用程序,否如果Buts或Maybes. 解决方案
6 2024-04-25
编程技术问答社区
Excel Interop Workbooks.Open的不一致性
我有一个正在打开多个工作簿的过程 var exApp = new Excel.Application(); Excel.Workbook ONE; Excel.Workbook TWO; Excel.Workbook THREE; ONE = exApp.Workbooks.Open(ONELocation); TWO = exApp.Workbooks.Open(TWOLocation); THREE = exApp.Workbooks.Open(THREELocation); Console.WriteLine("All Excel workbooks opened successfully\n"); 有时它没有问题. 有时我会在崩溃上得到以下例外 system.runtime.interopservices.comexception:'远程过程调用失败. (Hresult的例外:0x800706BE)' 例外情况发生在不同的工作簿上,有时甚至没有.当它
8 2024-04-25
编程技术问答社区
从Windows Forms DataGridView和TextBox导出数据到Excel
i具有包含TextBox控件数量和DataGridView的数量的A Form.我想将数据从该表格导出到Excel文件. 我正在使用此代码,它适用于DataGridView,但我不知道如何导出TextBox控制数据. private void copyAlltoClipboard() { dataGridView1.SelectAll(); DataObject dataObj = dataGridView1.GetClipboardContent(); if (dataObj != null) Clipboard.SetDataObject(dataObj); } try { copyAlltoClipboard(); Microsoft.Office.Interop.Excel.Application xlexcel; Microsoft.Office.Interop.Excel.Workbook xlWorkBo
14 2024-04-25
编程技术问答社区
如何改变这些Excel Interop PivotTables'行和列字段上自动添加的标签的文本?
我有一个行字段,允许用户过滤行: pvt.PivotFields("Description").Orientation = XlPivotFieldOrientation.xlRowField; ...和一个允许用户过滤列的列字段: var monthField = pvt.PivotFields("MonthYr"); monthField.Orientation = XlPivotFieldOrientation.xlColumnField; ...但是当生成透视性时,它会显示"行标签",我希望它说"描述"和"列标签",我希望它说"月": 如何将此默认/普通的香草词更改为我的自定义标签文字? 更多上下文,显示更多代码: PivotTable pvt = pc.CreatePivotTable(_xlPivotTableSheet.Range["A6"], "PivotTable"); pvt.MergeLabels = true; // The
10 2024-04-25
编程技术问答社区
为什么这段代码在写的两行之间插入了一个空白行(C# Excel Interop)?
在我的c#(.net 4.5)使用excel Interop的Windows表单应用程序中,我从在这里喜欢这样(删除Resharper灰色的冗余物品,然后添加"类型"./p> private void WriteListObjectTestSheet() { _xlSheetPlatypus.Cells[5, 1] = "Apple"; _xlSheetPlatypus.Cells[6, 1] = "Strawberry"; _xlSheetPlatypus.Cells[7, 1] = "Cashew"; _xlSheetPlatypus.Cells[8, 1] = "Kumquat"; _xlSheetPlatypus.Cells[9, 1] = "Pomegranate"; _xlSheetPlatypus.Cells[10, 1] = "Banana"; _xlSheetPlatypus.Cells[11, 1] = "Pi
2 2024-04-25
编程技术问答社区
C#-Excel-如何在自动过滤后删除可见行?
我正在使用一个小命令行工具来从Excel表中提取一些数据. 我想删除应用自动滤波器后可见的所有行. 不幸的是,我只是不知道如何继续. 搜索后,我找不到工作答案. 这是我到目前为止的: oXL = new Excel.Application(); oXL.Visible = false; oWB = oXL.Workbooks.Open(source); oXS = (Excel.Worksheet)oWB.Sheets[1]; Excel.Range filter = oXS.UsedRange; filter.AutoFilter(8, "text to filter"); 如何删除过滤后显示的所有行? 谢谢. Crowland 解决方案 Excel.Range filter = XlSheet_1.UsedRange; filter.A
16 2024-04-25
编程技术问答社区
如何将数值设置为二维的Excel范围?
我需要从特定格式的测试箱列表中构建Excel表,以将其上传到服务器. 我很高兴填充文件中"预期"和"实际"的两个维度范围. 我使用相同的方法来填充标头,即一维数组,而步骤(即二维). 流是: 向测试柜范围(某些标头 +步骤)退还资金.假设:第一次迭代的A1至E14. 在标题范围内挖掘一个子(本地)范围(例如:A1至C1). 将标题的测试柜范围内的另一个子(本地)范围倾倒(在我的情况下:D1至E14). 用测试案例值(标题和步骤)填充两个子范围. 重复以相同的本地范围(步骤2-3)退还下一个电子表格范围(A14至E28),然后填充它们,等等... 源值是一个词典,它表示测试案例的步骤(key = guidate and value =实际). . 这是我使用的代码: public class TestCase { public Dictionary steps; } Microsoft.Office.Inte
12 2024-04-24
编程技术问答社区
Microsoft.Office.Interop.Excel PrintOut 抛出错误
我在.NET框架4.5 Windows Service Project在我的64位Windows 7桌面Workstation上使用Microsoft.office.interop.excel.excel,除了PageSetup属性外,所有内容似乎都在起作用,更重要的是,更重要的是Worksheet对象的打印输出方法. 这是代码: Microsoft.Office.Interop.Excel.Application ExcelApp = null; Microsoft.Office.Interop.Excel.Workbook WBook = new Microsoft.Office.Interop.Excel.Workbook; Microsoft.Office.Interop.Excel.Worksheet WSheet = new Microsoft.Office.Interop.Excel.Worksheet); ExcelApp = new Microsoft.O
40 2024-04-24
编程技术问答社区