Carl Smith
Изменить порядок столбцов в Excel в Java
В Excel могут быть случаи, когда вам нужно переместить определенный столбец в другое место на листе, чтобы представить данные в более упорядоченном виде. Вместо того, чтобы вручную вырезать и вставлять данные, в этой статье рассказывается, как программно изменить порядок столбцов в Excel с помощью Free Spire.XLS for Java.
Зависимость от импорта (два метода)
Метод 1. Загрузите Free Spire.XLS for Java и разархивируйте его, затем добавьте файл Spire.Xls.jar в свой проект в качестве зависимости.
Метод 2. Вы также можете добавить зависимость jar в проект maven, добавив следующие конфигурации в pom.xml.
repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
Образец кода
Чтобы изменить порядок столбцов, вам нужно сначала получить целевой рабочий лист с помощью метода Workbook.getWorksheets().get(), а затем указать новый порядок столбцов в массиве int. Затем вам нужно создать временный лист и скопировать столбцы из временного листа в целевой лист и сохранить их в новом порядке. Полный пример кода показан ниже.
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class RearrangeColumns {
public static void main(String[] args) {
//Создайте объект Workbook
Workbook workbook = new Workbook();
//Загрузите файл Excel
workbook.loadFromFile( "test.xlsx");
//Получить первый рабочий лист
Worksheet worksheet = workbook.getWorksheets().get(0);
//Установите новый порядок столбцов (индекс столбца начинается с 0)
int[] newColumnOrder = new int[]{1, 3, 0, 2};
//Добавить временный лист
Worksheet newSheet = workbook.getWorksheets().add("temp");
//Скопируйте данные с первого рабочего листа на временный лист
newSheet.copyFrom(worksheet);
//Перебрать массив newColumnOrder
for (int i = 0; i < newColumnOrder.length; i++) {
//Скопируйте столбец с временного листа на первый лист
newSheet.getColumns()[newColumnOrder[i]].copy(worksheet.getColumns()[i],true,true);
//Установите ширину определенного столбца на первом листе на ширину временного листа
worksheet.getColumns()[i].setColumnWidth(newSheet.getColumns()[newColumnOrder[i]].getColumnWidth());
}
//Удалить временный лист
workbook.getWorksheets().remove(newSheet);
//Сохраните книгу в другой файл Excel
workbook.saveToFile("MoveColumn.xlsx", FileFormat.Version2016);
}
}