Tag: excel interop

Microsoft Excel Interop检查Excel工作表是否支持Autofit

在使用Excel Interop ,我想出了一个问题。 保存之前我使用以下代码自动调整工作表的列。 Excel.Worksheet curSheet = (Excel.Worksheet)wsEnumerator.Current; curSheet.UsedRange.EntireColumn.AutoFit(); 它对我来说工作得很好。 然后我遇到了一些特定的Excel工作表的问题。 如果我自动填写它表示AutoFit method of Range class failed 。 导致问题的Excel表可以在这里find 现在我想知道的是,是否有一些方法来检查一个Excel表格是否支持Autofit。 就像是 if(sheet.CanAutoFit()) curSheet.UsedRange.EntireColumn.AutoFit(); 任何帮助,将不胜感激。

从Excel中删除function区

我试图从Excel窗口中删除function区栏。 目前我正在使用下面的代码来删除function区。 excelApp.ExecuteExcel4Macro("SHOW.TOOLBAR(""Ribbon"",False)") 但是它也会移除包含标题栏的单元格上的所有内容。 我需要标题栏,以便用户可以移动,最小化,最大化和closures窗口。 理想情况下,我想删除整个function区,但如果可以最小化function区上的图标,我会很满意。 我可以通过单击标题栏上的小黑色矩形和三angular形图标来最小化function区图标,因此它必须是可能的。

如何分别识别分组列和隐藏列?

我有一个excel包含几个分组列。 在那个小组内,有几列是隐藏的(右键隐藏)。 当组被折叠。所有列的隐藏属性返回true,我不想要的。 除了折叠组中的其他组列之外,是否还有办法识别最初的隐藏列?

防止Workbooks.Open()使Excel在Windows资源pipe理器中可见

我正在使用Excel互操作来对现有的Excel文件执行操作。 但是,当我调用Workbooks.Open()时,它会导致Excel窗口打开。 是否可以防止这种情况,只在内存中打开工作簿?

将Excel单元格中的文本与新行alignmentc#

当单元格有两行时,如何alignmentExcel中的文本? 我试过这个: for (int j = 1; j <= RowsCount; j++) { for (int i = 1; i <= 18; i++) { ws.Cells[j, i].Style.VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ws.Cells[j, i].Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; } } 但是,这只适用于单元格有1行,就像ws.get_range [] …

获取debugging模式下的工作表数 – MS Excel PIA

我无法访问Sheets .Count属性。 我正在使用Excel Interop。 我在debugging模式,我想这个: ?xlSheets.Count 这导致: (1):错误BC30456:“计数”不是“表格”的成员。 我不知道什么是错的,因为我在MSDN中看到有这样的属性 ! 这效果很好: ?xlSheets(1).Name 。 但Count失败…有可能得到床单的数量? 这些人有一个类似的问题 – 他们想.Worksheets.Add(.Worksheets.Sheets.Count) 。 最后他们没有得到计数 ,他们去了.Worksheets.Add(After:=.Worksheets(3)) … 更新: 令我非常高兴的是,经过进一步尝试/试验之后,很明显, 在debugging模式下, 只有在代码中没有这样的行时, Sheets.Count才能工作 。 在debugging此代码时,我可以访问Sheets.Count ,因为代码中存在此行。 Imports Excel = Microsoft.Office.Interop.Excel Public Class Form1 Dim xlApp As Excel.Application Dim xlWorkBook As Excel.Workbook Dim xlWorkbooks As Excel.Workbooks Dim xlSheets As Excel.Sheets Private Sub btnCreate_Click(ByVal […]

为C#互操作对象创build可重用的Excel样式

我使用C#生成了一些电子表格,我正在尝试创build一个可重用的样式 ,可以应用于每个电子表格中的特定范围。 我遇到的问题是,当我的方法完成执行时,Excel进程不能正确退出。 事实上,我已经能够将问题范围缩小到创buildExcel Style的代码中。 Workbooks books = excelApplication.Workbooks; _Workbook wBook = books.Add(""); _Worksheet wSheet = (_Worksheet)wBook.ActiveSheet; Styles styles = wBook.Styles; Style columnHeader = styles.Add("ColumnHeader"); columnHeader.Font.Size = 12; // if I comment this out, excel quits correctly Marshal.ReleaseComObject(wSheet); Marshal.ReleaseComObject(wBook); Marshal.ReleaseComObject(books); 当我应用它时,样式按预期工作,但是当我退出Excel应用程序时,Excel过程不会退出。 如果我注释掉这一行columnHeader.Font.Size = 12; ,Excel进程正确退出。 我错过了什么吗? 更新 我修改了Govert的示例WinForms应用程序,以反映我的课程的结构,这是创build多个电子表格。 他的应用程序正确地退出了Excel进程,但是我的修改版本没有: using System; using Excel = Microsoft.Office.Interop.Excel; […]

将Excel电子表格保存为PDF

我正在尝试使用Visual Basic将Excel电子表格保存为PDF文件。 我在网上find了一些示例代码(见下面),但是我打开了一个Visual Basic似乎不能识别的Workbook对象。 build议… ' load Excel file Dim workbook As New Workbook() workbook.LoadFromFile("D:\test.xlsx") ' Set PDF template Dim pdfDocument As New PdfDocument() pdfDocument.PageSettings.Orientation = PdfPageOrientation.Landscape pdfDocument.PageSettings.Width = 970 pdfDocument.PageSettings.Height = 850 'Convert Excel to PDF using the template above Dim pdfConverter As New PdfConverter(workbook) Dim settings As New PdfConverterSettings() settings.TemplateDocument = pdfDocument pdfDocument […]

使用Interop.Excel检查Excel文件是否包含VBAmacros

在我的应用程序中,我必须检查一个Excel文档是否包含vbmacros。 所以我写了下面的方法来检查excel文件: internal static bool ExcelContainsMacros(string pathToExcelFile) { bool hasMacros = true; Microsoft.Office.Interop.Excel._Application excelApplication = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook workbooks = null; try { object isReadonly = true; workbooks = excelApplication.Workbooks.Open( pathToExcelFile, missing, isReadonly, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); hasMacros = workbooks.HasVBProject; LogHasMacros(hasMacros); } catch (Exception exception) { LogError(exception); […]

为什么我的数据透视表字段名称被认为是无效的和/或我的数据被视为没有组织成带有标签列的列表?

注意:我在这里有一个相关的问题,但是已经完全改变了代码,仍然得到相同的错误信息,即“ 数据透视表字段名称无效。要创build数据透视表报表,必须使用组织为列表的数据带有标签的列如果您要更改数据透视表字段的名称,则必须为该字段键入一个新的名称。 正如您在下面的代码中所看到的,数据透视表字段被赋予名称(第一个“描述”,然后是“月”): private void AddPivotTable() { var pch = _xlBook.PivotCaches(); pch.Add(XlPivotTableSourceType.xlDatabase, "A6:F94") .CreatePivotTable(_xlSheet.Cells[6, 1], "PivTab1", Type.Missing, Type.Missing); var pvt = _xlSheet.PivotTables("PivTab1") as PivotTable; if (pvt != null) { pvt.MergeLabels = true; pvt.ErrorString = ""; pvt.DisplayErrorString = true; var fld = ((PivotField)pvt.PivotFields("Description")); fld.Orientation = XlPivotFieldOrientation.xlRowField; fld = ((PivotField)pvt.PivotFields("Month")); fld.Orientation = XlPivotFieldOrientation.xlColumnField; fld.NumberFormat = "MMM yy"; […]