适当的调整 excel 中的“行”和“列”顺序可以增加可读性,例如通过将日期数据设置为首行或者首列,就可以根据特定的日期快速定位数据。在 ms excel 中移动行或列是非常容易的,只需选中行或列后使用鼠标来拖动即可。在本文中,我们将演示如何使用 spire.xls for .net 在 c# 中对excel文档中的“行”或“列”重新排序。
安装 spire.xls for .net
首先,您需要将 spire.xls for .net 包含的 dll 文件作为引用添加到您的 .net 项目中。dll 文件可以从此链接下载,也可以通过 安装。
pm> install-package spire.xls
对 excel 文档中“行”重新排序
使用 spire.xls for .net 来重新排序 excel 文档的行,首先需要把目标工作表复制到一个临时工作表中,然后按照指定顺序把临时工作表中的行复制到目标工作表的指定行,这样新排序的行覆盖了原始数据,就实现了对行重新排序的效果,具体步骤如下。
- 创建一个 workbook 对象。
- 使用 workbook.loadfromfile() 方法加载 excel 文件。
- 使用 workbook.worksheets[index] 获取目标工作表。
- 创建一个 int 数组来存储新的行顺序。
- 创建一个临时工作表,并通过 worksheet.copyform 将数据从目标表中复制到其中。
- 通过 worksheet.rows[index].copy() 方法将行从临时表复制到目标表,覆盖掉目标表的原数据,并以新的顺序存储它们;再通过 worksheet.rows[index].rowheight 来设置新的行高。
- 通过 workbook.worksheets.remove 移除临时表。
- 使用 workbook.savetofile() 方法将工作簿保存到结果 excel 文件中。
- c#
using spire.xls;
using system.linq;
namespace rearrangerows
{
internal class program
{
static void main(string[] args)
{
// 创建一个workbook对象
workbook workbook = new workbook();
// 从指定路径加载excel文件
workbook.loadfromfile(@"../../data1/摘要.xlsx");
// 获取第一个工作表
worksheet worksheet = workbook.worksheets[0];
// 定义新的行顺序数组
int[] newroworder = new int[] { 0,1,2,3,6,4,5};
// 添加一个新的工作表,命名为"temp"
worksheet newsheet = workbook.worksheets.add("temp");
// 将原工作表的内容复制到新工作表中
newsheet.copyfrom(worksheet);
// 遍历新的行顺序数组
for (int i = 0; i < newroworder.count(); i )
{
// 将原工作表的行复制到新工作表的新位置
newsheet.rows[newroworder[i]].copy(worksheet.rows[i], true, true);
// 将原工作表的行高设置为新工作表对应行的行高
worksheet.rows[i].rowheight = newsheet.rows[newroworder[i]].rowheight;
}
// 删除临时工作表
workbook.worksheets.remove(newsheet);
// 将修改后的工作簿保存到指定路径,使用2016版本的excel格式
workbook.savetofile(@"../../output/moverow.xlsx", fileformat.version2016);
}
}
}
对 excel 文档中“列”重新排序
以下是使用 spire.xls for .net 在 excel 中重新排列“列”顺序的步骤:
- 创建一个 workbook 对象。
- 使用 workbook.loadfromfile() 方法加载 excel 文件。
- 使用 workbook.worksheets[index] 获取目标工作表。
- 创建一个 int 数组来存储新的列顺序。
- 创建一个临时工作表,并通过 worksheet.copyform 将数据从目标表中复制到其中。
- 通过 worksheet.columns[index].copy() 方法将列从临时表复制到目标表,覆盖掉目标表的原数据,并以新的顺序存储它们;再通过 worksheet.columns[index].columnwidth 来设置新的列宽。
- 通过 workbook.worksheets.remove 移除临时表。
- 使用 workbook.savetofile() 方法将工作簿保存到结果 excel 文件中。
- c#
using spire.xls;
using system.linq;
namespace rearrangecolumns
{
internal class program
{
static void main(string[] args)
{
// 创建一个workbook对象
workbook workbook = new workbook();
// 从指定路径加载excel文件
workbook.loadfromfile(@"../../data1/资产.xlsx");
// 获取第一个工作表
worksheet worksheet = workbook.worksheets[0];
// 定义新的列顺序
int[] newcolumnorder = new int[] { 0,1,3,2 };
// 添加一个新的工作表,命名为"temp"
worksheet newsheet = workbook.worksheets.add("temp");
// 将原工作表的内容复制到新工作表中
newsheet.copyfrom(worksheet);
// 遍历新的列顺序数组
for (int i = 0; i < newcolumnorder.count(); i )
{
// 将原工作表的列复制到新工作表的新位置
newsheet.columns[newcolumnorder[i]].copy(worksheet.columns[i], true, true);
// 将原工作表的列宽设置为新工作表对应列的列宽
worksheet.columns[i].columnwidth = newsheet.columns[newcolumnorder[i]].columnwidth;
}
// 删除临时工作表
workbook.worksheets.remove(newsheet);
// 将修改后的工作簿保存到指定路径,使用2016版本的excel格式
workbook.savetofile(@"../../output/movecolumn.xlsx", fileformat.version2016);
}
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。