Tag: comobject

SaveCopyAs方法不起作用

(我是英文的一周,所以起初不好意思解释:D) 我通过我的应用程序打开一个excel文件。 我有一个Excel中的Addd-In和一个function区中的button来保存button的Click事件的代码(确切地说是一个保存button所做的保存操作)在这里: Globals.ThisAddIn.Application.ActiveWorkbook.Save(); 在我的应用程序中,我将一个方法(称为WorkbookBeforeSave)分配给工作簿的“BeforeSave”事件处理程序,在我的自定义目录中手动保存工作簿。 private void WorkbookBeforeSave(bool saveasui, ref bool cancel) { _excelApp.EnableEvents = false;//_excelApp is my Excel Application if (!_excelWorkbook.Saved)//_excelWorkbook is Active Excel Workbook { _excelWorkbook.SaveCopyAs(_savedFilePath);//_savedFilePath is my custom directory _excelWorkbook.Saved = true; } cancel = true; _excelApp.EnableEvents = true; } 问题是当我单击原始Excel保存button“SaveCopyAs”方法正常工作,但点击我的自定义保存button“SaveCopyAs”方法不起作用。 (没有抛出exception,所有代码编译和debugging)

C#excel从c#创build的工作表中获取文档级别

我一直在试图添加一个combobox或真正的任何forms的控制到飞行中创build的Excel表。 在c#中创build一个Excel工作簿项目时,我可以添加一个combobox到excel工作表,并且能够访问文档级(Sheet1)中的Controls.AddComboBox函数,如下所示:图1 namespace ExcelWorkbook2{ public partial class Sheet1{ private void Sheet1_Startup(object sender, System.EventArgs e){ Microsoft.Office.Tools.Excel.Controls.ComboBox comboBox1 =this.Controls.AddComboBox(this.Range["A1", "A1"], "comboBox1"); comboBox1.Items.Add("1 Item"); this是指sheet1这个代码在创build工作簿项目时工作正常,但是当我像这样创build一个Excel工作表时:图2 Application xlApp = new Application(); xlApp.Visible = true; Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet ws = (Worksheet)wb.Worksheets[1]; 我无法进入工作表(ws)并获得“controls.AddCombobox”。 将工作表(图2)放在快速表中说System .___ Comobject在另一个项目(图1)中的“this”对象返回值(ExcelWorkbook2.Sheet1)。 我怎么能到达Controls.AddCombobox作为WorkSheetBase在c#生成的工作表中使用(图2)。 谢谢

PowerShell – 使用多个ComObjects不稳定?

我正在写一个脚本,打开并复制表格从Excel到Word,但每个运行的结果是不同的。 它首先做得不错,但经过​​几次运行后,烦人的红色文本开始出现(特别是“调用被拒绝被调用者”和select对象的方法,如$ wordObject.Selection.TypeParagraph不能运行,因为$ wordObject.Selection成为一个空值expression。 closures它们之后,我尝试了ReleaseComObject,但问题仍然存在 这是因为我在同一节中使用两个ComObject? 我的脚本结构是这样的: $Excel = New-Object -ComObject excel.application $Excel.visible = $false $Workbook = $excel.Workbooks.open($pathEx) $range = $workbook.activesheet.usedrange $cop = $range.Copy() $wd = new-object -comObject Word.application $wd.visible = $true $doc = $wd.documents.open($pathWd) $wdSelection = $wd.Selection $a = $wdSelection.Endkey(6,0) $wdSelection.typeparagraph() $wd.Selection.paste() closures并退出: $workbook.close($false) $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null Remove-Variable workbook, excel […]

操作完成后释放Excel * 32进程

试图找出为什么我的EXCEL * 32过程仍然在使用,直到我的应用程序和excel文件都closures。 在创build之后,我必须丢失一些东西,就像这个代码之后,应用程序保存在EXCEL * 32资源中。 任何build议让它在出口操作后“放手”完成? 此外,我不想closures新创build的Excel工作表,我只想释放与我的实际.net应用程序相关的资源。 Application xls = new Application(); xls.SheetsInNewWorkbook = 1; // Create our new excel application and add our workbooks/worksheets Workbook Workbook = xls.Workbooks.Add(); Worksheet CrossoverPartsWorksheet = xls.Worksheets[1]; // Create our new excel application and add our workbooks/worksheets Workbook Workbook = xls.Workbooks.Add(); Worksheet CrossoverPartsWorksheet = xls.Worksheets[1]; ///////////////////////////////////////// // < […]

在自动化程序中挂起Excel.exe进程

var tempFileName = file.Replace(".xlsx", "_Temp.xlsx"); Application excelApp = new Application(); Workbooks books = excelApp.Workbooks; Workbook excelFile = books.Open(file); Sheets sheets = excelFile.Worksheets; var app = excelApp.Application; DeleteRows(sheets, 3); excelFile.SaveAs(tempFileName); excelFile.Close(); books.Close(); app.Quit(); excelApp.Quit(); Marshal.FinalReleaseComObject(sheets); Marshal.ReleaseComObject(excelFile); Marshal.ReleaseComObject(books); Marshal.FinalReleaseComObject(excelApp); sheets = null; excelFile = null; excelApp = null; books = null; 我正在尝试处理我的excel对象,但是即使上面的代码仍然让我在程序运行完成后挂起EXCEL.EXE进程。 我已经在这里看到过这个问题了很多次,但是大多数asker都没有尝试过ReleaseComObject ReleaseComObject()方法,但是这并没有为我解决任何问题。 编辑:这是我用来删除标题后读取表的代码 System.Data.DataTable schemaTable […]

使用ListObject.Add创build表格样式时出错

我试图创build一个自定义表(就像在Excel中单击“格式为表格”),从CSV中使用PowerShell和Excel ComObject 这是我的代码… $Excel = New-Object -ComObject excel.application $Excel.visible = $true $Excel.sheetsInNewWorkbook = $csvFiles.Count $workbooks = $excel.Workbooks.Add() $worksheets = $workbooks.worksheets $CSVFullPath = C:\temp.csv $worksheet = $worksheets.Item(1) $worksheet.Name = "Temp" $TxtConnector = ("TEXT;" + $CSVFullPath) $CellRef = $worksheet.Range("A1") $Connector = $worksheet.QueryTables.add($TxtConnector,$CellRef) $worksheet.QueryTables.item($Connector.name).TextFileCommaDelimiter = $True $worksheet.QueryTables.item($Connector.name).TextFileParseType = 1 $worksheet.QueryTables.item($Connector.name).Refresh() $worksheet.UsedRange.EntireColumn.AutoFit() ## So Far So good – CSV […]

访问Excel文件时返回的C#系统.__ ComObject

我试图通过下面的代码访问Excel文件: Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook book; Microsoft.Office.Interop.Excel.Worksheet sheet; Excel.Range range1 = null, range2 = null; CultureInfo ci = new CultureInfo("en-US"); Thread thisThread = Thread.CurrentThread; thisThread.CurrentCulture = new CultureInfo("en-US"); book = ObjExcel.Workbooks.Open(LinguisticInstructionsFileName); 在variables的最后一行内容是System.__ComObject而在不同的应用程序代码工作和variables有…Excel.WorkbookClass 。 所以我想问一下这个奇怪的行为可能是什么原因。 我已经尝试调用Workbooks.Open与额外的Missing.Value参数,但结果是相同的。