На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Apache POI - Вопрос по выводу значений ячеек
    Нижеследующий код выдает результат в консоли:
    ....................
    D5 - C34
    C34
    ....................
    Почему выводится сама формула (=C34) , стоящая в ячейке D5, а не число, которое видно в ячейке D5 если открыть сам файл?
    Как сделать чтобы выводилось само число?

    ExpandedWrap disabled
      import org.apache.poi.ss.usermodel.*;
      import org.apache.poi.ss.util.CellReference;
      import org.apache.poi.xssf.usermodel.XSSFSheet;
      import org.apache.poi.xssf.usermodel.XSSFWorkbook;
      import java.io.*;
       
      public class POITest {
       
          public static void main(String[] args) throws IOException {
              FileInputStream fis = new FileInputStream("C:/Test/1.xlsm");
              XSSFWorkbook workbook = new XSSFWorkbook(fis);
              XSSFSheet sheet = workbook.getSheetAt(1);
              CellReference ref = new CellReference("D5");
              int row = ref.getRow();
              int col = ref.getCol();
              Cell cell = sheet.getRow(row).getCell(col);
              gettingTheCellContents(ref, cell);
              fis.close();
              workbook.close();
          }
       
          // https://poi.apache.org/spreadsheet/quick-guide.html#CellContents
          private static void gettingTheCellContents(CellReference cellRef, Cell cell) {
       
              DataFormatter formatter = new DataFormatter();
              System.out.print(cellRef.formatAsString());
              System.out.print(" - ");
       
              // get the text that appears in the cell by getting the cell value and applying any data formats (Date, 0.00, 1.23e9, $1.23, etc)
              String text = formatter.formatCellValue(cell);
              System.out.println(text);
       
              // Alternatively, get the value and format it yourself
              switch (cell.getCellTypeEnum()) {
                  case STRING:
                      System.out.println(cell.getRichStringCellValue().getString());
                      break;
                  case NUMERIC:
                      if (DateUtil.isCellDateFormatted(cell)) {
                          System.out.println(cell.getDateCellValue());
                      } else {
                          System.out.println(cell.getNumericCellValue());
                      }
                      break;
                  case BOOLEAN:
                      System.out.println(cell.getBooleanCellValue());
                      break;
                  case FORMULA:
                      System.out.println(cell.getCellFormula());
                      break;
                  case BLANK:
                      System.out.println();
                      break;
                  default:
                      System.out.println();
              }
          }
          
      }
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0246 ]   [ 16 queries used ]   [ Generated: 28.03.24, 21:07 GMT ]