Tag: office interop

写入Workbook.CustomDocumentProperties时,“价值不在预期范围内”

从C#编写的控制台应用程序中进行如下所示的简单分配: workbook.CustomDocumentProperties.Item["PropertyName"] = "Property Value"; 产生以下错误: {"Value does not fall within the expected range."} Data: {System.Collections.ListDictionaryInternal} HResult: -2147024809 HelpLink: null IPForWatsonBuckets: 0x633f1015 InnerException: null IsTransient: false Message: "Value does not fall within the expected range." ParamName: null RemoteStackTrace: null Source: "System.Dynamic" StackTrace: " at System.Dynamic.ComRuntimeHelpers.CheckThrowException(Int32 hresult, ExcepInfo& excepInfo, UInt32 argErr, String message)\r\n at CallSite.Target(Closure , […]

Excel互操作迭代通过行,并有条件地删除整行缺less一些行

我正在build立一个Excel自动化程序,我需要有条件地删除特定的行。 例如,我有224行特定的发布者。 在这224行160行是无效的,我需要删除160.但是,当我遍历行并有条件地删除160行只有138被删除。 22行始终保留在表单中。 我找不到原因是什么? 代码写在下面。 List<string> removeList = listofRemovalOfSpecificPublishers; string path = "C:\\Library Automation\\Source\\publishers.xlsx"; var workBookData = GetWorkBookData(path, "Booking Publishers Info"); mWSheet1 = workBookData.mWorkSheet1; Microsoft.Office.Interop.Excel.Range xlRange; xlRange = mWSheet1.UsedRange; for (int i = 1; i <= xlRange.Rows.Count; i++) { string publisher = Convert.ToString(xlRange.Cells[i, 3].Value); //publisher column string bookState = Convert.ToString(xlRange.Cells[i, 8].Value); //status column if […]

如何从索引实现列自我命名?

我希望能够实例化我的Cell类,同时用“A”,“B”,“C”等命名单元实例,就像在Excel电子表格中一样。 我有我的Cell类如下所示: public class Cell { public Cell(Range nativeCell) { NativeCell = nativeCell; } public Range NativeCell { get; private set; } } 和我的Sheet类: public class Sheet { private IDictionary<string, Cell> _cells; public Sheet(Worksheet nativeSheet) { NativeSheet = nativeSheet; _cells = new Dictionary<string, Cell>(); for (int rowIndex = 1; rowIndex <= NativeSheet.Rows.Count; ++rowIndex) for (int […]

在C#中编程创buildExcel文件,无需Microsoft.Office.Interop.Excel

我需要在c#中创build和填充excel文件。 使用Microsoft.Office.Interop.Excel,可以轻松创build,但需要在服务器上安装Office。 我正在寻找没有Office安装和没有任何第三方组件的解决scheme。

如何使用C#与Interop.Excel库从现有Excel文件中获取特定元素?

我需要从Excel文件中获取数据,以便将它们打印在HTML表格(使用MVC,无gridview)中,并最终将它们存储在数据库中。 表格和Excel之间的映射如下所示: Excel – >表 第一行 – >表头 其他单元格 – >表格数据 我正在使用Interop.Excel库,它提供了在.NET中处理Excel文件的方法。 使用这段代码,我可以在lworkSheetvariables中获取Excel文件的第N个工作表: var lworkSheet = xlWorkBook.Worksheets.get_Item(N); 让我们假设Excel文件只有一个工作表(N = 1),我可以使用工作表特定的属性来获取行,列,单元格和范围 。 这些属性返回Interop.Excel.Rangetypes的对象。 问题是,行,列和单元格分别返回Excel文件中的所有行,列和单元格,而不仅仅是那些填充数据的行。 因此,为了获得我所做的数据(Excel项目的索引是基于1的): var lheaders = xlWorkSheet.Rows.get_Item(1); var lexcelItems = new Excel.Range[xlWorkSheet.Rows.Count, xlWorkSheet.Columns.Count]; for (var i=0; i < xlWorkSheet.Rows.Count; i++) { for(var j=0; j < xlWorkSheet.Columns.Count; j++) { lexcelItems[i,j] = xlWorkSheet.Cells.get_Item(i+2, j+1); } } […]

Excel Worksheet.Usedrange返回什么types

我正在将应用程序从vba转换为C#。 这很慢。 这是我的第一个挑战 在vba中,我可以将一个Excel范围分配给一个vba二维数组: Dim strSheetArray as Variant strSheetArray = xlSH.UsedRange … debug.print strSheetArray[1,2] 'etc. 当我转换为C#时,“UsedRange”属性似乎返回一个对象。 我似乎无法像数组那样使用该对象,从而导致代码错误。 那么,如何引用返回的对象,以便我可以遍历它呢? 而且,只要我在它,细胞没有types,所以我怎么使用它们(有些是数字,其他是文本等)。这是很容易的VBA …. 谢谢您的帮助。

使用Microsoft.Office.Interop.Excel创build具有太多表单的xls文件

我如何创build一个表单? 我所做的是这样的: public static void CreateExcel(string year) { Application xlApp = new Application(); Workbook xlWorkBook; Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.Item[1]; xlWorkSheet.Name = year; xlWorkSheet.Cells[1, 1] = "Share"; xlWorkSheet.Cells[1, 2] = "Q1"; xlWorkSheet.Cells[1, 3] = "Q2"; xlWorkSheet.Cells[1, 4] = "Q3"; xlWorkSheet.Cells[1, 5] = "Q4"; xlWorkBook.SaveAs(@"H:\\QResults.xls", XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, […]

有没有办法以编程方式检查是否打开Excel文件

我想检查一个特定的Excel文件是否已经打开。 否则,当我在C#程序中重新打开相同的文件时,它将以只读格式打开。 有没有办法找出文件是否已经打开?

导入到Excel不起作用

我正在使用Office集成包 正确地遵循指令后,我仍然无法获得Excel导入工作 我的Visual Studio Lightswitch 2011应用程序被configuration为在IIS服务器上运行,并使用Easy Shell (所以它是由MS提供的默认Shell)。 到目前为止,我已经尝试过打电话了 OfficeIntegration.Excel.Import( this.States, @"C:\Users\Mr_Mia_Gie\My Documents\ExcelSheet.xls", "Sheet1", "A1:C3"); 在一个button的_Execute event (该button不住在壳命令栏上) 我得到的exception是“对象variables或未设置块variables”。 任何解决scheme或build议将不胜感激 干杯

禁止或至less检测Excel形状的运动

我正在尝试构build一个小型应用程序,与Micrososft Excel进行交互(2007年,如果它重要)。 我的应用程序将启动并连接到Excel的一个实例,并在一张纸上放置(编程)一个或多个形状。 我需要禁止用户移动和/或调整这些形状的大小。 我可以保护工作表,但我需要允许用户编辑单元格内容并调整行和/或列的大小。 有没有办法做到这一点? 如果我不能禁止,至less我可以检测形状的移动/resize事件,并在拖动结束时以编程方式返回?