У меня есть таблица активов (excel) с десятичными числами (т. Е. 30.50), но я могу запустить приведенный ниже код только в том случае, если ячейки отформатированы как «без десятичных разрядов» (30), в противном случае это выдаст мне ошибку ниже.Ошибка отображает число с плавающей запятой как 30,50 с комер вместо оригинальных 30.50 !!!
Необходимо преобразовать строку rCell в плавающее.
rCell = readCell.getContents();
float testnumber = Float.parseFloat(rCell);
//////// ****** Читать актив EXCEL Файл **** ///////////
AssetManager assetManager = getAssets();
InputStream inputStream = null;
try {
inputStream = assetManager.open("MyFile.xls");
} catch (IOException e) {
e.printStackTrace();
}
try {
readAsset = Workbook.getWorkbook(inputStream);
} catch (IOException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
}
Sheet s = readAsset.getSheet(0);
//////////////////////////////// ****** НАПИСАТЬ Excel на SD *** /////////////
Fnamexls="testfile" + ".xls";
File sdCard = Environment.getExternalStorageDirectory();
directory = new File (sdCard.getAbsolutePath() + "/MyFolder");
directory.mkdirs();
sdFile = new File(directory, Fnamexls);
wbSettings = new WorkbookSettings();
wbSettings.setLocale(new Locale("en", "EN"));
try {
wrWorkbook = Workbook.createWorkbook(sdFile, wbSettings);
writeSheet = wrWorkbook.createSheet("First Sheet", 0);
int row = s.getRows();
int col = s.getColumns();
//xx = "";
for (int c = 0; c < col; c++) {
for (int r = 0; r < row; r++) {
Cell z = s.getCell(c, r);
xx = z.getContents();
Label label4 = new Label(c, r, String.valueOf(xx));
try {
writeSheet.addCell(label4);
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
wrWorkbook.write();
try {
wrWorkbook.close();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//createExcel(excelSheet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
readTest();
public void readTest(){
Workbook m_workBook = null;
try {
m_workBook = Workbook.getWorkbook(sdFile);
} catch (IOException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
}
readSheet = m_workBook.getSheet(0);
int rRow = readSheet.getRows();
int rCol = readSheet.getColumns();
Cell readCell = readSheet.getCell(2, 0);
rCell = readCell.getContents();
float testnumber = Float.parseFloat(rCell); //Line error
}
Ошибка консоли «Причина: java.lang.NumberFormatException: для входной строки:« 30,50 »в java.lang.FloatingDecimal.readJavaFormatString (FloatingDecimal.java:1306)»