2017-06-15 9 views
0

私はJavaを使って読み書きを勉強しています。私はExcelシートから棒グラフを作成するためのコードを書いています。「STRINGセルから数値を取得できません」というエラーに直面しています。私は問題を解決する方法を理解していません..誰も私が問題を解決するのを助けることができます。Javaの文字列セルから数値を取得する

ここにコードです。

> import java.io.*; import java.util.*; 
> 
> import org.jfree.data.*; import org.jfree.chart.JFreeChart; import 
> org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; 
> import org.jfree.chart.plot.PlotOrientation; import 
> org.apache.poi.hssf.usermodel.HSSFRow; import 
> org.apache.poi.hssf.usermodel.HSSFCell; import 
> org.apache.poi.hssf.usermodel.HSSFSheet; import 
> org.apache.poi.hssf.usermodel.HSSFWorkbook; import 
> org.jfree.data.category.DefaultCategoryDataset; import 
> org.apache.poi.ss.usermodel.Cell; 
> 
> 
> public class BARCHART{ public static void main(String[]args){ short 
> a=0; short b=1; int i=0; ArrayList<String> list1=new 
> ArrayList<String>(); ArrayList<Integer> list2=new 
> ArrayList<Integer>(); 
> 
> String x; int y=0; String filename ="Student Grading Report.xls"; 
> 
> 
> if(filename != null && !filename.equals("")){ try{ FileInputStream fs 
> =new FileInputStream(filename); HSSFWorkbook wb = new HSSFWorkbook(fs); for(int k = 0; k < wb.getNumberOfSheets(); k++){ 
> int j=i+1; HSSFSheet sheet = wb.getSheetAt(k); int rows = 
> sheet.getPhysicalNumberOfRows(); for(int r = 1; r < rows; r++){ 
> HSSFRow row = sheet.getRow(r); int cells = 
> row.getPhysicalNumberOfCells(); HSSFCell cell1 = row.getCell(a); 
> 
> x =(String) cell1.getStringCellValue(); HSSFCell cell2 = 
> row.getCell(b); y =(int) cell2.getNumericCellValue(); 
> 
> list1.add(new String(x)); list2.add(new Integer(y)); } i++; } 
> }catch(Exception e){ System.out.println(e); 
> 
> } 
> 
> } DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
> for(int j=0;j<list2.size();j++){ 
> dataset.setValue((double)list2.get(j), "Marks", 
> list1.get(j).toString()); } JFreeChart chart = 
> ChartFactory.createBarChart("BarChart","Marks", "St_Id", dataset, 
> PlotOrientation.VERTICAL, false,true, false); try { 
> ChartUtilities.saveChartAsJPEG(new File("chart.jpg"), chart,400, 300); 
> } catch (IOException e) { System.out.println("Problem in creating 
> chart."); } } } 

このような問題の解決に役立つ人は誰ですか?ありがとうございます:)

+1

は、それが読める最初に作るためにあなたのコードを再フォーマット;) – HieuHT

答えて

0

文字列をJavaの倍精度または整数に保存しようとすると、強く型付けされた言語であるため、文字列を拒否します。代わりに

Integer.parseInt(*desiredVariable*) 

または

Double.parseDouble(*desiredVariable*) 

は、正しいデータ型にこれらの文字列を変更するには、コードの行を使用することができます。

+0

メソッドの解析は、ArrayListには適用されませんので、それが機能していません...他の提案を? –

+0

エラーの原因となっている特定の行を指摘できますか?それはあなたのコンソールであなたに伝えるべきです。 – JoshKopen

+0

私はparseメソッドを使用すると、プログラムの開始時に配列リストとしてlist1を宣言するのに使用されるように、解析が文字列配列リストに適用できないというエラーを表示します。配列リストの配列の宣言を単純な配列に変更したとき、行46,47,48にエラーが表示されます。このメソッドは単純な文字列には適用できません。 –

0
HSSFCell yourCell = sheet.getRow(row).getCell(column); 
    yourCell.setCellType(Cell.CELL_TYPE_STRING); 
    String data = yourCell.getStringCellValue(); 
+0

これは私のコードでどのように使用するのですか?なぜなら私はそれを得ていないからです。あなたが親切にコードを編集すれば?ありがとうございました –

関連する問題