Excelシートの値を読み取り、それらの値をJavaの配列に格納したいと思います。
Excelシートを読み取る準備ができているコードがありますが、それらの値を配列に格納するようにカスタマイズすることはできません。
これがExcelシートを読むための私のコードです:
package com.core.testscripts;
import Java.io.File;
import Java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class NewExcel
{
private String inputFile;
public void setInputFile(String inputFile)
{
this.inputFile = inputFile;
}
public void read() throws IOException
{
File inputWorkbook = new File(inputFile);
Workbook w;
try
{
w = Workbook.getWorkbook(inputWorkbook);
// Get the first sheet
Sheet sheet = w.getSheet(0);
// Loop over first 10 column and lines
for (int j = 0; j < sheet.getColumns(); j++)
{
for (int i = 0; i < sheet.getRows(); i++)
{
Cell cell = sheet.getCell(j, i);
System.out.println(cell.getContents());
}
}
}
catch (BiffException e)
{
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException
{
NewExcel test = new NewExcel();
test.setInputFile("D:/hellohowareyou.xls");
test.read();
}
}
import Java.io.File;
import Java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class NewExcel
{
private String inputFile;
String[][] data = null;
public void setInputFile(String inputFile)
{
this.inputFile = inputFile;
}
public String[][] read() throws IOException
{
File inputWorkbook = new File(inputFile);
Workbook w;
try
{
w = Workbook.getWorkbook(inputWorkbook);
// Get the first sheet
Sheet sheet = w.getSheet(0);
data = new String[sheet.getColumns()][sheet.getRows()];
// Loop over first 10 column and lines
// System.out.println(sheet.getColumns() + " " +sheet.getRows());
for (int j = 0; j <sheet.getColumns(); j++)
{
for (int i = 0; i < sheet.getRows(); i++)
{
Cell cell = sheet.getCell(j, i);
data[j][i] = cell.getContents();
// System.out.println(cell.getContents());
}
}
/* for (int j = 0; j < data.length; j++)
{
for (int i = 0; i <data[j].length; i++)
{
System.out.println(data[j][i]);
}
} */
}
catch (BiffException e)
{
e.printStackTrace();
}
return data;
}
}
本当に配列が必要な場合は、ストレージを割り当てるときに、配列に必要な要素の数を知る必要があります。これは実行時に実行できます(コンパイル時に認識されている必要はありません)が、配列を使用する前に実行する必要があります。
宣言セクションのどこか:
String[] dataArray = null;
そしてコードのどこかに
dataArray = new String[numberOfElements];
同じ原理で2次元(またはそれ以上)の配列を作成できます。その後、numberOfElements
未満のインデックスで配列の任意の要素に文字列を割り当てることができます。
package Utilities;
import Java.io.File;
import Java.io.FileInputStream;
import Java.io.IOException;
import Java.util.ArrayList;
import Java.util.HashMap;
import Java.util.Iterator;
import Java.util.List;
import Java.util.Map;
import org.Apache.poi.ss.usermodel.Cell;
import org.Apache.poi.ss.usermodel.Row;
import org.Apache.poi.ss.usermodel.Sheet;
import org.Apache.poi.ss.usermodel.Workbook;
import org.Apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcellReading {
// public Workbook workbook= null;
// public Sheet firstSheet= null;
public String INPUT_XLS = "/ExcelManipulation/TestExecution.xlsx";
public ExcellReading() {
}
public ExcellReading(String filepath) {
INPUT_XLS = filepath;
}
public Map<Integer, List<String>> ReadExcel() throws IOException {
FileInputStream inputStream = new FileInputStream(new File("TestExecution.xlsx"));
Map<Integer, List<String>> data = new HashMap<Integer, List<String>>();
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet firstSheet = workbook.getSheetAt(5);
Iterator<Row> iterator = firstSheet.iterator();
// Test test=new Test();
int rowCnt = 0;
while (iterator.hasNext()) {
Row nextRow = iterator.next();
Iterator<Cell> cellIterator = nextRow.cellIterator();
List<String> obj = new ArrayList<String>();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
String cellobj = cell.getStringCellValue();
if ("".equals(cell.getStringCellValue())) {
obj.add("Missing");
} else if (cellobj.equals(null)) {
obj.add("");
} else {
obj.add(cell.getStringCellValue());
}
}
data.put(rowCnt, obj);
rowCnt++;
}
return data;
}
}