Tag: 性能

如何加快将DataTable转储到Excel工作表?

我有以下例程将DataTable转储到Excel工作表中。 private void RenderDataTableOnXlSheet(DataTable dt, Excel.Worksheet xlWk, string [] columnNames, string [] fieldNames) { // render the column names (eg headers) for (int i = 0; i < columnNames.Length; i++) xlWk.Cells[1, i + 1] = columnNames[i]; // render the data for (int i = 0; i < fieldNames.Length; i++) { for (int j = 0; […]

使用Office Interop将单元格写入Excel的最快方法?

我正在写一个函数来使用VB .NET中的Office Interop将数据导出到Excel中。 我目前正在使用Excel工作表的Cells()方法直接编写单元格: worksheet.Cells(rowIndex, colIndex) = data(rowIndex)(colIndex) 这对于大量的数据来说需要很长时间。 有没有更快的方法来写入大量的数据到Excel一次? 做一些范围会更快?

如何加快自动化apache POI的列?

我使用下面的代码来自动化电子表格中的列: for (int i = 0; i < columns.size(); i++) { sheet.autoSizeColumn(i, true); sheet.setColumnWidth(i, sheet.getColumnWidth(i) + 600); } 问题是在超过3000行的大型电子表格中,每个列需要10多分钟的时间自动resize。 尽pipe小文件的速度非常快。 有什么可以帮助autosizing更快地工作吗?

Excel VBA性能 – 100万行 – 在1分钟内删除包含值的行

我试图find一种方法来过滤大量数据,并在不到一分钟的时间内删除工作表中的行 目标: 在列1中查找包含特定文本的所有logging,并删除整行 保持所有单元格格式(颜色,字体,边框,列宽)和公式原样 。 testing数据: : 。 代码如何工作: 它首先closures所有的Excelfunction 如果工作簿不为空,并且要删除的文本值存在于第1列中 将第一列的使用范围复制到一个数组中 迭代数组中的每个值 当它find匹配时: 将单元格地址附加到格式为"A11,A275,A3900,…"的tmpstring中 如果tmp可变长度接近255个字符 使用.Range("A11,A275,A3900,…").EntireRow.Delete Shift:=xlUp删除行.Range("A11,A275,A3900,…").EntireRow.Delete Shift:=xlUp 将tmp重置为空,并移至下一组行 最后,它将所有Excelfunction重新打开 。 主要问题是删除操作 ,总持续时间应该在一分钟以内。 任何基于代码的解决scheme只要在1分钟内执行,都是可以接受的。 这将范围缩小到很less可接受的答案。 已经提供的答案也非常短,易于实施。 一个人在大约30秒内完成操作,所以至less有一个答案提供了一个可接受的解决scheme,其他人也可能会觉得它有用 。 我的主要初始function: Sub DeleteRowsWithValuesStrings() Const MAX_SZ As Byte = 240 Dim i As Long, j As Long, t As Double, ws As Worksheet Dim memArr As Variant, […]

在C#中生成Excel列字母的最快函数

什么是最快的C#函数和int,并返回一个string包含一个或多个字母在Excel函数中使用? 例如,1返回“A”,26返回“Z”,27返回“AA”等。 这被称为成千上万次,并且需要25%的时间来生成具有许多公式的大型电子表格。 public string Letter(int intCol) { int intFirstLetter = ((intCol) / 676) + 64; int intSecondLetter = ((intCol % 676) / 26) + 64; int intThirdLetter = (intCol % 26) + 65; char FirstLetter = (intFirstLetter > 64) ? (char)intFirstLetter : ' '; char SecondLetter = (intSecondLetter > 64) ? (char)intSecondLetter : ' […]