Tag: interop

插入图像时如何保持Excel互操作性

我正在使用Excel COM互操作插入图像(特别是EPS)到电子表格中。 图像插入正常,但Excel忽略所有的可见/背景设置,窃取焦点显示一个对话框,如“导入图像”。 对话框只能保留一小段,但会使屏幕闪烁,更糟糕的是,当我一次插入多个图像时,它可以垄断系统几秒钟(包括从前台进程中窃取按键)。 我设置后台选项如下: Excel.Application xlApp = new Excel.Application(); xlApp.Visible = false; xlApp.ScreenUpdating = false; xlApp.DisplayAlerts = false; Excel.Worksheet worksheet; //…. worksheet.Pictures(Type.Missing).Insert(filename,Type.Missing); //steals focus 我怎样才能让Excel保持在这里的背景?

为什么这个Using()会给我一个错误?

我正在尝试打开(几百个)excel文件。 我打开该应用程序,但希望在打开的每个工作簿周围使用Using()function。 为什么这会导致错误? using (Excel.Workbook wbXL = appXL.Workbooks.Open(_sourceFullPath, Type.Missing, Excel.XlFileAccess.xlReadOnly)) { //stuff with wbXL } 使用获取红色下划线,并说“'Microsoft.Office.Interop.excel.Workbook':使用using语句中的types必须隐式转换为'System.IDisposable'。 如何使这项工作?

Excel中的HRESULT代码在C#中互操作

我正在寻找一种干净的方式来在Excel中使用interop来输出C#中的错误。 当文件不是“正确的”时,有一个像“ blabla HRESULT:0x800AC472 ”的消息。 我宁愿要像“ 文件使用有这个或那个问题 ”的消息。 为了做到这一点,我需要知道每个HRESULT映射到哪个错误? 如何获得这样的错误列表? 我看MSDN,发现一些说明,但我似乎无法find像上面提到的“ 0x800AC472 ”所有代码的列表。

当程序写入数据到excel时等待打开excel

我一直在做应用程序,从串口读取数据,然后写入Excel(连续)。 如果在写入串行数据之后打开当前的excel文件,或者写入串行数据,则打开当前文件是没有问题的。 问题是在串行接收数据之后,程序正在写入数据到excel,同时我尝试打开当前文件或从程序外(手动)打开另一个excel应用程序。 错误消息:错误:文件扩展名不正确(来自HRESULT的exception:0x800401E6(MK_E_INVALIDEXTENSION)行:mscorlib 接收到的串口数据>>打开excel文件>>写入excel >>另存为>>>串口数据接收>>打开excel文件>>写入excel >>另存为>>>数据写入excel后,没有closures工作簿,我只是把它看不见了。 这是我的示例代码 Excel.Application oXL; Excel._Workbook oWB; Excel._Worksheet oSheet; ….. oXL = new Excel.Application(); oWB = oXL.Workbooks.Open("C:\\Folder\\SerialData" + filenumber + ".xlsx", 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); oSheet = (Excel._Worksheet)oWB.Worksheets["Sheet" + sheetnumber]; ….. oWB.SaveAs("C:\\Folder\\SerialData" + filenumber + ".xlsx",Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, Type.Missing, Type.Missing, […]

xlApp.ActiveWorkbook返回null

我有一个2010年的Excelfunction区加载项。 当你按下一个button,它只是写一些数据到Excel应用程序。 为了写这个数据我需要得到活动工作表。 为了获得活动工作表,我需要activeWorkBook。 我可以得到xlApp罚款 xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); 它检索xlApp罚款但是,每当我尝试获得活动工作簿,它返回null。 无论。 除非我重新启动我的电脑。 然后,它的工作,但只有第一次。 以下是上下文中的整个代码块。 我想知道如何解决xlApp.ActiveWorkBook为空。 这样我可以得到活动的工作表。 然后将数据写入活动工作表。 public void sendData() { Excel.Application xlApp = null; Excel.Workbook xlWorkBook = null; Excel.Workbooks xlWorkBooks = null; Excel.Worksheet xlWorkSheet = null; object misValue = System.Reflection.Missing.Value; try { xlApp = new Excel.Application(); //xlWorkBooks = xlApp.Workbooks; //xlWorkBook = xlWorkBooks.Add(Properties.Settings.Default.FileToSend); //xlWorkSheet = xlWorkBook.Sheets[1]; […]

将数据插入到单个Excel工作簿上的多个工作表中

我正在从两个不同的C#列表导出到一个工作簿中的两个Excel工作表使用下面的代码 Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet1 = null; worksheet1 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets["Sheet1"]; worksheet1 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.ActiveSheet; for (int i = 1; i < listExport.Count + 1; i++) { worksheet1.Cells[i+1,1] = listExport[i – 1].time.ToString("HH:mm:ss"); worksheet1.Cells[i+1, 2] = listExport[i – 1].CC; worksheet1.Cells[i+1, 3] = listExport[i – 1].term; } Microsoft.Office.Interop.Excel._Worksheet worksheet2 = null; worksheet2 […]

不能从asp.net创build一个excel文件

我正在尝试创build一个Excel文件,但无法成功。 我试图用很多的例子,但最好的例子是我想micrsoft的例子。 我在第四行出现错误信息,如下面的错误信息 “无法find一个或多个编译dynamicexpression式所需的types,您是否缺less参考?” 我究竟做错了什么? 我怎样才能解决这个问题,还是有更好的解决scheme? var excelApp = new Excel.Application(); excelApp.Visible = false; excelApp.Workbooks.Add(); Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet; //*****ERROR workSheet.Cells[1, "A"] = "ID Number"; workSheet.Cells[1, "B"] = "Current Balance";

从互操作转移到COM参考

目前我们有一个远程控制台执行控制台应用程序。 该控制台执行各种Excelmacros – 这些macros在Excel 2010文件中 – 远程框已安装Excel 2010 。 我现在在我的电脑上安装了Excel 2013 ,并在我们的一个xl文件中添加了一些function。 这不是通过控制台运行。 控制台有一个对Microsoft.Office.Interop.Excel 14.0.0.0和本程序内的引用使用以下内容: using Excel = Microsoft.Office.Interop.Excel; … … Excel.Application excelApp = null; … … excelApp = new Excel.Application(); 我相信这将需要改变。 希望我正在阅读@HansPassant(参考: 我仍然可以使用Office 2013的Microsoft.Office.Interop程序集? )正确,但我需要: 将引用删除到Microsoft.Office.Interop.Excel v14.0.0.0 添加对Microsoft Excel 15.0 Object Library v1.8的引用 如果我做了这个改变,控制台能够在Excel 2010和Excel 2013文件中运行macros吗? 一旦我从interop移动到这个COM参考,上面的代码片断将如何改变?

在这种情况下我的Excel Range.OutlineLevel为空或System.DBNull?

在我的VSTO加载项代码中,我有一个range.outlinelevel检查我的工作表行。 根据文档大纲级别可能是1到8,并且是Variant / Doubletypes。 但是有时候返回null 和其他时间range.OutlineLevel.GetType()返回DBNull 有人知道为什么/当这种情况? 一个相关的post: https : //stackoverflow.com/questions/27778183/fastest-way-to-get-the-highest-range-outlinelevel-in-an-excel-worksheet

为什么build立PDF后Excel不closures?

我使用此代码将Excel文件转换为PDF。 问题是Excel进程并不紧密。 我错过了什么? protected void Indexchanged_ConvertPDF(Object sender, EventArgs e) { Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.DisplayAlerts = false; xlApp.Visible = false; xlApp.ScreenUpdating = false; string path = CertificadosPresion.SelectedRow.Cells[0].Text; string CertName = CertificadosPresion.SelectedDataKey.Value.ToString(); Workbook xlWorkbook = xlApp.Workbooks.Open(path); xlWorkbook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, @"C:\pdf\" + SALESID.Text + "_CertPres.pdf", 0, false, true); xlWorkbook.Close(); xlApp.Quit(); xlApp = null; xlWorkbook = null; DisposeCOMObject(xlWorkbook); DisposeCOMObject(xlApp); […]