Удаление строки от Excel покрывает с ПОИ Apache HSSF

использование используется, когда у Вас есть ресурс, который Вы хотите расположенный после того, как оно использовалось.

, Например, если Вы выделяете ресурс Файла и только должны использовать его в одном разделе кода для небольшого чтения или записи, использование полезно для избавления от ресурса Файла как только Ваш сделанный.

ресурс, используемый потребности реализовать IDisposable для работы правильно.

Пример:

using (File file = new File (parameters))
{
    *code to do stuff with the file*
}
29
задан Juha Syrjälä 2 December 2009 в 19:43
поделиться

4 ответа

HSSFRow имеет метод под названием setRowNum (int rowIndex) .

Когда вам нужно «удалить» строку, вы помещаете этот индекс в список List . Затем, когда вы переходите к следующей непустой строке, вы берете индекс из этого списка и устанавливаете его, вызывая setRowNum () , и удаляете индекс из этого списка. (Или вы можете использовать очередь)

2
ответ дан 28 November 2019 в 01:42
поделиться

Что-то вроде

int newrownum=0;
for (int i=0; i<=sheet.getLastRowNum(); i++) {
  HSSFRow row=sheet.getRow(i);
  if (row) row.setRowNum(newrownum++);
}

должно помочь.

3
ответ дан 28 November 2019 в 01:42
поделиться

Я пытаюсь заглянуть в глубины своего мозга, чтобы узнать о том, что произошло с POI год или два назад, но мой первый вопрос был бы таков: почему строки должны быть удалили перед разбором? Почему бы вам просто не поймать нулевой результат вызова sheet.getRow (rowNum) и не продолжить?

0
ответ дан 28 November 2019 в 01:42
поделиться
 /**
 * Remove a row by its index
 * @param sheet a Excel sheet
 * @param rowIndex a 0 based index of removing row
 */
public static void removeRow(HSSFSheet sheet, int rowIndex) {
    int lastRowNum=sheet.getLastRowNum();
    if(rowIndex>=0&&rowIndex<lastRowNum){
        sheet.shiftRows(rowIndex+1,lastRowNum, -1);
    }
    if(rowIndex==lastRowNum){
        HSSFRow removingRow=sheet.getRow(rowIndex);
        if(removingRow!=null){
            sheet.removeRow(removingRow);
        }
    }
}
30
ответ дан 28 November 2019 в 01:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: