Tag: office interop

F#Excel UsedRange未定义

错误:“字段,构造函数或成员UsedRange未定义”。 代码摘录: open Microsoft.Office.Interop.Excel open Microsoft.Office.Tools.Excel // Onorio's excellent suggestion didn't fix code until this line was added. // Once the above line was added, Onorio's suggestion worked, // but now F# says "The field, constructor or member 'EntireColumn' is not defined". let xl = ApplicationClass() xl.Workbooks.OpenText(… let wb = xl.Workbooks.Item(1) let ws = wb.ActiveSheet […]

如何使用C#Excel“Microsoft.Office.Interop.Excel”来计算一列中不是空单元的数量

所以我有这个电子表格,它有Fname,Lname,Pnumber,Email,Cid。 Cid是唯一真正重要的,其余的在技术上是可选的。 所以,而不是只是做一个循环,以查看单元格值何时开始为空,我知道你可以使用 WorksheetFunction.CountA(大约30个不同的variables,我不明白,但也是可选的); 得到填充单元的实际数量,这是瞬间的。 我不知道如何做到这一点。 这就是我要做的viva循环,但我知道CountA()函数可以在一行中完成。 int i = 1; while (i <= 200) { cell = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[i, 5]; if (cell.Value2 > 0) {i++;} else {break;} } int totalCol = i; 好的,这是我现在所拥有的,谢谢大家。 var cell = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 1]; cell.Formula = "=CountA(E1:E200)"; double totalCells = (cell.Value2) -1;

最快的方法来枚举或查找所有空的Excel单元格,并更改其样式或做一些其他处理

这可能是枚举或迭代的最好方法,或者只是在Excel中查找具有特定数据结构的空单元格或单元格,以及稍后一旦发现它在其上进行一些处理。 我厌倦了Range,Value,Value2等等,但是当Excel Sheet比较大的时候需要相当长的时间。 我相信还有一些其他有效的方法。 这将是很好,如果你可以显示一些示例代码片段。

如何在没有消息的情况下打开Excel工作簿工作簿包含指向其他数据源的链接。 编程?

我想以编程方式打开一个或多个Excel工作簿。 当我打开工作簿时,会出现一个问题: 工作簿包含指向其他数据源的链接。 而且我不想按“ 不更新 ” 你怎么能离开这个消息框? 所以function不会中断。 更新是不需要的。

使用OLEDB从Excel导入数据时截断数据,有哪些select?

我有一个WPF应用程序,我有function从Excel中读取数据。 我正在使用OLEDB进行这个工作,并且工作得很好,直到我发现列有255个限制,数据将被截断,除非在前8行中不存在数据> 255个字符。 解决这个问题是更新registry,这意味着更新所有用户的registry。 所以我不想这样做。 OLEDB代码: string strSQL = "SELECT * FROM [Sheet1$]"; OleDbCommand cmd = new OleDbCommand(strSQL, conn); DataSet ds1 = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter(cmd); da.Fill(ds1); 作为替代,我尝试了Interop.Excel。 但是,OLEDB似乎比较慢。 使用Interop.Excel需要2秒钟才能加载的Excel表格大约需要15秒。 System.Data.DataTable tempTable = new System.Data.DataTable(); tempTable.TableName = "ResultData"; Excel.Application app = new Excel.Application(); Excel.Workbook book = null; Excel.Range range = null; try […]

如何以编程方式在多个工作表之间的Excel单元格中查找重复值

例如,我有一张名为EmployeeSheet的工作表,它是公司中每个员工姓名的首个和最后一个列。 让我们假设这个列表是完全格式化的,没有重复,所以每个单元格在这张表中是唯一的。 现在,我为公司中的每个部门都有一个工作表,例如FinanceSheet , ITSheet和SalesSheet 。 每张表都有一个地方(如每张表中没有相同的布局),每个部门的雇员名单。 但是,任何一个员工名称只能在所有部门表单之间出现一次(不包括EmployeeSheet)。 这里是我能想到的解决scheme,但不知道如何实现,将是一个multidimensional array(在学校学习了一点,依稀记得如何使用)。 伪代码类似于: arrEmployees = {"Tom Hanks", "Burt Reynolds", "Your Mom"} arrFinance = {"Tom Hanks"} arrIT = {"Burt Reynolds"} arrSales = {"Your Mom"} arrSheets = {arrEmployees, arrFinance, arrIT, arrSales} 虽然我已经能够通过使用单个单元格值和范围作为string Sheets shts = app.Worksheets; Worksheet ws = (Worksheet)sheets.get_Item("EmployeeSheet"); Excel.Range empRange = (Excel.Range)worksheet.get_range("B2"); string empVal = empRange.Value2.ToString(); 但是,通过这个过程来获得一个string的单个单元格的值,我不知道如何将它放入我的数组元素,更不用说一系列的值。 […]

Vb.net Excel移动到下一行

嘿,我期待看到如何去移动我的电子表格中目前我在哪里。 我努力了: Dim xlsApp As Excel.Application Dim xlsWB As Excel.Workbook Dim xlsSheet As Excel.Worksheet Dim xlsCell As Excel.Range xlsCell = xlsSheet.Range("A1", "A100") For Each oRowRange As Excel.Range In xlsCell.Rows For Each oCellRange As Excel.Range In oRowRange.Columns If colorRGB = "252, 213, 180" Then Debug.WriteLine(oCellRange.Text) oCellRange.Offset(0, 1).Select() Debug.WriteLine(oCellRange.Text) etc… End If Next Next 在上面的例子中,它一直保持相同的文本: BOB BOB […]

如何使用Microsoft.Interop.WordembeddedWord文档中的Excel文件?

我有一个问题,我有一个Excel表,我想要插入到一个Word文档,使用Microsoft.Interop.Word 。 我已经试过这个: var path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent?.FullName + @"\Documents\Businessprocess\Excel-Templates\Tabelle_zum_BP.xlsx"; var oIconLabel = "Tabelle zum BP"; var oMissing = System.Reflection.Missing.Value; var oIconFileName = oMissing; var oFileDesignInfo = path; var oClassType = "Word.Document.8"; _wordDocument.Bookmarks["EPExcelFile"].Range.InlineShapes.AddOLEObject( oClassType, oFileDesignInfo, false, true, oIconFileName, oMissing, oIconLabel, oMissing); 我从这个网站上的其他线索得到了这个解决scheme。 唯一的问题是,它现在插入Excel表: 图片 我怎样才能插入表,使其直接显示,而不是通过图标? 我需要一个Excel表格没有链接到Word表格的解决scheme,所以如果我以后编辑Excel表格,这个词不应该受到影响。

创buildCSV文件时出现偶然IOException“进程无法访问文件…”

我正在通过使用Office.Interop.Excell库创build一个CSV(与';'作为分隔符)文件。 下面的代码在我的计算机上工作正常,但我的客户之一有时得到了IO.Exception:“进程无法访问文件,因为它正在被另一个进程使用”。 奇怪的是,这个错误是不是总是popup,有时它的作品,有时它不… 什么可能是这偶然IO.Exception为我的客户端的原因。 这是我的代码: public static void GenerateCsvFile(DataSet ds, string paramFileFullPath, Dictionary<string, string[]> tableHeaders) { object missing = System.Reflection.Missing.Value; var excel = new Application { DisplayAlerts = false }; Workbook workbook = null; try { workbook = excel.Application.Workbooks.Add(true); foreach (System.Data.DataTable dt in ds.Tables) AddTableSheet(ref workbook, ref excel, dt, true, tableHeaders[dt.TableName], false); workbook.SaveAs(paramFileFullPath, XlFileFormat.xlTextMSDOS, missing, […]

自动适应所有列,find有数据的最后一行和最后一列

我想: 确保Excel工作表的所有列都被加宽到足以适应列的每一行中的文本; 和 我想find最后一列和在该工作表中有数据的最后一行,即最后一个非空行和最后一个非空列。 具有背景颜色但没有文字的单元也被认为是非空的。 所以,比如,像这样的工作表: 看起来像这样: 而最后一个数据单元被报告为D10,因为它是最后一个脏单元,即使它没有文本。 什么VSTO方法/ API会给我上面的?