-3

我已經成功地將XLS工作表讀取到ArrayList。現在棘手的部分是,我試圖將其映射到固定的二維數組。分別爲i = 1705x = 155y = 11將數組列表轉換爲固定的二維數組並打印?

編輯:也許我沒有明確的問題部分所述。 我試圖將下面提到的Excel(Book1.xls)的元素複製到二維數組中。到目前爲止,我已經成功將ti複製到arraylist中:「singleRows」。但我無法將它們移動到二維數組:「myReplicate」。

我想使用此數組的元素來創建SQL插入語句。 希望我沒有錯過任何指定要求。

package excelread3; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 
import java.util.stream.Stream; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.DateUtil; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFCell; 

public class ExcelRead3 
{ 
    public static void main(String[] args) throws IOException 
    { 
     FileInputStream file = new FileInputStream(new File("C:\\Users\\CReaper\\Documents\\docs\\Opice\\Book1.xls")); 
     HSSFWorkbook wb = new HSSFWorkbook(file); 
     HSSFSheet sheet = wb.getSheetAt(0); 
     HSSFRow firstRow = sheet.getRow(0); 
     int rowcount = sheet.getPhysicalNumberOfRows(); 
     int colcount = firstRow.getLastCellNum(); 
     Iterator<Row> rowIterator = sheet.iterator(); 
     ArrayList<Object> singleRows = new ArrayList<Object>(); 
     ArrayList<Object> list = new ArrayList<Object>(); 
     while (rowIterator.hasNext()) 
     { 
      Row row = rowIterator.next(); 
      Iterator <Cell> cellIterator = row.cellIterator(); 
      for(int i =1 ; i < colcount ; i++) 
      { 
       while (cellIterator.hasNext()) 
       { 
        Cell cell = cellIterator.next(); 
        //System.out.print(cell.getStringCellValue() + "\t\t"); 
        singleRows.add(cell.getStringCellValue()); 
       } 
      } 
      list.add(singleRows); 
     } 
     // System.out.println(rowcount + "\n"); 
     // System.out.println(colcount + "\n"); 
     Stream<Object> stringStream; 
     stringStream = singleRows.stream(); 
     String[][] myReplicate = new String[rowcount][colcount]; 
     myReplicate = stringStream.toArray(new String[stringStream.size()]); 
     for (int i = 0; i < rowcount; i++) 
     { 
      for(int j = 0; j < colcount; j++) 
      { 
       System.out.printf("%5d ", myReplicate[i][j]); 
      } 
      System.out.println(); 
     } 
     file.close(); 
    } 
} 

我想在填充數組元素之前將ArrayList轉換爲流。

+2

爲什麼代碼中的每一行都是註釋?另外,迴避機制並解釋你想要達成的目標。這個問題目前還不清楚,很可能會被低估並擱置。 –

+0

你好,這是我第一次嘗試插入代碼到stackoverflow,它一直說我的代碼沒有正確格式化,直到我評論每一行(Ctrl + K)..我在這裏試圖做的是將excel映射到二維數組,然後爲sql插入語句創建案例。 – Manjunath16

回答

0

剛剛檢查過將Excel映射到二維數組。 並發現這個:

 String[][] excelData = new String[numRows][numCols]; 
     for (int i=0; i<numRows; i++) 
       { 
       HSSFRow row = mySheet.getRow(i); 
       for (int j=0; j<numCols; j++) 
        { 
        HSSFCell cell = row.getCell(j); 
        String value = cell.getStringCellValue(); 
        excelData[i][j] = value; 
        System.out.println(Arrays.deepToString(excelData));  
        } 
       System.out.println(); 
       }  
        } 
       System.out.println(); 
       } 

這幫助我進一步我的要求。 感謝您的關注。