使用 Interop 按列对工作表进行排序
Sort a worksheet by a column using Interop
我在 Internet 上找到了各种相关代码,但似乎没有任何效果。也许有人可以指出我的错误:
// Get a Range of the data to sort
// (I also tried to use _worksheet.UsedRange, but it fails - why?)
var dataToSort = _worksheet.Range["A2", $"Z{lastLine}"];
// Sort range
dataToSort.Sort(_worksheet.Range["A2"]);
有趣的是它使用列而不是行...
其实我想写这样的东西:
_worksheet.Sort(columnIndex: 1);
但是找不到合适的重载
我的 Sheet 看起来像这样:
1 | | |
2 | Z | Data2 |
3 | A | Data1 |
之后我希望它看起来像这样:
1 | | |
2 | A | Data1 |
3 | Z | Data2 |
(对 xlsx 文件使用 Excel 2019 和 Excel Interop 15)
哎呀,不管什么原因 sort orientation default 是 xlSortRows
。我不得不切换到 xlSortColumns
,现在它可以使用这个简单的 oneliner:
_worksheet.UsedRange.Sort(_worksheet.Columns[1], Orientation: XlSortOrientation.xlSortColumns);
我在 Internet 上找到了各种相关代码,但似乎没有任何效果。也许有人可以指出我的错误:
// Get a Range of the data to sort
// (I also tried to use _worksheet.UsedRange, but it fails - why?)
var dataToSort = _worksheet.Range["A2", $"Z{lastLine}"];
// Sort range
dataToSort.Sort(_worksheet.Range["A2"]);
有趣的是它使用列而不是行...
其实我想写这样的东西:
_worksheet.Sort(columnIndex: 1);
但是找不到合适的重载
我的 Sheet 看起来像这样:
1 | | |
2 | Z | Data2 |
3 | A | Data1 |
之后我希望它看起来像这样:
1 | | |
2 | A | Data1 |
3 | Z | Data2 |
(对 xlsx 文件使用 Excel 2019 和 Excel Interop 15)
哎呀,不管什么原因 sort orientation default 是 xlSortRows
。我不得不切换到 xlSortColumns
,现在它可以使用这个简单的 oneliner:
_worksheet.UsedRange.Sort(_worksheet.Columns[1], Orientation: XlSortOrientation.xlSortColumns);