Добавлять значения в определенный столбец при записи значений в excel с помощью stringbuilder

Я пытаюсь экспортировать данные в Excel и использую StringBuffer для добавления столбцов и строк. Я написал необходимые заголовки столбцов и в эти заголовки заполняю значения. Я получаю даты, как в фрагменте кода. Некоторые значения под датами равны нулю. Итак, я столкнулся с проблемой наличия пустых данных для дат, ячейка обрабатывается как пустая, а значения не помещаются в правый столбец, я попытался проверить значение null и вместо этого добавить 0, но это не сработало как хорошо.

Я не знаю, как мне решить эту проблему. Я хочу получить этот конкретный столбец даты, например, для столбца «require201809», если значение существует, заполните это значение, иначе оставьте его пустым.

StringBuffer strBf = new StringBuffer();
strBf.append("BW");
for (String date : sortedOrderedDates) {
    strBf.append(";require" + date);
    strBf.append(";free" + date);
}
strBf.append("\n");
for (String skulId : pro.getSkulGrMap().keySet()) {
    strBf.append(pro.getBWId());
    strBf.append(";");
    for (String dateKey : productData.get(skulId).getOrderAmount().keySet()) {
        if(productData.get(skulId).getOrderAmount().get(dateKey)== null){
            strBf.append("0");
            strBf.append(";");
        }else{
            strBf.append(productData.get(skulId).getOrderAmount().get(dateKey));    
            strBf.append(";");
        }
        if(productData.get(skulId).getProductAmount().get(dateKey) != null){
            strBf.append(productData.get(skulId).getProductAmount().get(dateKey));
            strBf.append(";");
        }else{
            strBf.append("0");
            strBf.append(";");
        }
    }
    strBf.append("\n");
}

Я был бы действительно полезен, если бы кто-нибудь мог мне помочь с этим или, по крайней мере, дать представление о том, как я могу с этим справиться.

Пожалуйста, не используйте StringBuffer, так как он был заменен StringBuilder более десяти лет назад. btw strBf.append("0;"); быстрее, чем добавление одной строки за раз.

Peter Lawrey 10.08.2018 15:56

Если пустые поля удаляются, это больше похоже на проблему с тем, как вы читаете данные, а не с тем, как вы их пишете. Пустое поле для значения null вполне подойдет.

Peter Lawrey 10.08.2018 15:57

У вас есть пример того, что происходит, когда вы пытаетесь вставить пробел? Похоже, вы говорите, что столбцы «сдвигаются»? Вы пробовали пространство с похожими результатами? Идя в другом направлении, мне интересно, могли бы вы рассмотреть подход DataTable в соответствии с этой статьей: stackoverflow.com/questions/8207869/…

LBW 10.08.2018 16:02

Я изменил способ чтения данных, если нет данных для поля даты, я добавил к нему null, до этого я пропустил просмотр полей, было ли значение доступно или нет. Проблема была в функции getProductAmount (). И, как и предполагалось, я добавил место для нулевых значений во время записи, и это сработало. Всем спасибо за предложения.

gopi 13.08.2018 10:10
1
4
133
0

Другие вопросы по теме