2015-09-11 4 views
-1

Я начинающий программист в Java, и это код, который я написал до сих пор:Тип ошибки отливка Java, Apache POI

public class Fastclass { 
    public static void main (String[] args) throws Exception{ 

    String[] data; 
    data = excelRead(); 
    for (int i = 1; i < data.length; i++){ 

     findcontact(data[i]); 

    } 
    } 

    public static String[] excelRead() throws Exception{ 
    File excel = new File ("C:\\Users\\user\\Desktop\\Folder\\subfolder\\Data.xlsx"); 
    FileInputStream fis = new FileInputStream(excel); 
    HSSFWorkbook wb = new HSSFWorkbook (fis); 
    HSSFSheet ws = wb.getSheet("Sheet1"); 

    int rowNum = ws.getLastRowNum() + 1; 
    String[] data = new String [rowNum]; 

    for (int i=1; i<rowNum; i++){ 

     HSSFRow row = ws.getRow(i); 
     HSSFCell cell = row.getCell(i); 
     String value = cellToString(cell); 
     data[i] = value;   

    } 

    **return data[i];** 
    } 


    public static String cellToString (HSSFCell cell) { 
    int type; 
    Object result; 
    type = cell.getCellType(); 
    switch(type){ 
    case 0: // numeric value in excel 
     result = cell.getNumericCellValue(); 
     break; 
    case 1: //String value in excel 
     result = cell.getStringCellValue(); 
     break; 
     default: 
      throw new RuntimeException("There are no support for this type of cell"); 
    } 

    return result.toString(); 
    } 

} 

Функция excelRead используется для чтения файла первенствовать и функции cellToString используется для преобразования различных типов данных в excel.

Функция findcontact, вызываемая из основного класса, является реальной логикой, которую мне нужно реализовать. Однако это не важно с точки зрения этого вопроса.

Я получаю сообщение об ошибке в инструкции return в функции чтения excel, и ошибка не может преобразовать строку в строку [] (строковый массив). Любая помощь оценивается. Огромное спасибо.

ответ

2

Ваша функция excelRead должна возвращать String[] (потому что вы назначая результат data, а String[]). Это

return data[i]; // <-- a String 

должен быть

return data; // <-- a String[] 
+0

спасибо Эллиот и остальные из вас, ребята – user3777207

1

Это немного трудно читать код (возможно форматирование), но если возвращаемые данные [я]; - это ваш оператор return, тогда вы просто возвращаете один элемент массива, который является строкой.

просто используйте «данные возврата»; вместо

1

Вашего метода подпись:

public static String[] excelRead() throws Exception 

говорит, что вы хотите, чтобы вернуть массив String, но вы возвращаете элемент (String) из массива.

Может быть, вы хотите, чтобы вернуть весь массив:

return data; 

или изменить метод подписи:

public static String excelRead() throws Exception 

и возвращает строку элемент массива, как вы пытаетесь сделать?

0

Согласно методу следующей подписи вы должны вернуть массив строк

public static String[] excelRead() throws Exception 

, где, как вы возвращаете строку

**return data[i];** 

либо изменить сигнатуру метода, поэтому тип возвращаемого значения Строка или вернуть String []