Skip to content

Instantly share code, notes, and snippets.

@btolfa
Created April 5, 2012 13:58
Show Gist options
  • Save btolfa/2311200 to your computer and use it in GitHub Desktop.
Save btolfa/2311200 to your computer and use it in GitHub Desktop.
Результат работы Виталия
package myPack;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileInputStream;
import java.util.HashMap;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
// идея работы класса:
// на входе xls и txt
// на выходе Map
public class GetMap {
@SuppressWarnings({ "unchecked", "rawtypes" })
HashMap getMyMap(String wayF, String wayF_ID, int rwF, int clF, int nmCl) throws IOException{
/* !! Этот отладочный вывод надо переделать на использованние
* библиотек для отлаживания. В последнее время я использую
* logback http://logback.qos.ch
*/
System.out.println("The way of book is: " + wayF);
System.out.println("Row: " + rwF + " Cell: " + clF);
System.out.println();
/* !! Насколько я просил, чтобы inputStream был входным параметром,
* а не имя файла. Переделать!
*/
// читалка из xml и txt
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(wayF));
BufferedReader buR = new BufferedReader(new FileReader(wayF_ID));
Sheet shtB = wb.getSheetAt(0);
Row rw = shtB.getRow(rwF);
// возвращаемый объект
HashMap hm = new HashMap();
Cell cl;
/* !! Поправь отступы! Если лень самому, то eclipse может расставить
* отступы сам, достаточно нажать Ctrl+Shift+F
*/
for (int j=0; j<nmCl; j++){
cl = rw.getCell(clF + j);
int cellType = cl.getCellType();
switch (cellType) {
case Cell.CELL_TYPE_STRING:
System.out.print("(" + cl.getStringCellValue() + ")");
break;
case Cell.CELL_TYPE_NUMERIC:
//System.out.print(cl.getNumericCellValue() + " --- ");
//Занесение в карту
hm.put(buR.readLine(), cl.getNumericCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
System.out.print("[" + cl.getNumericCellValue() + "]");
break;
default:
System.out.print("!");
break;
}
//System.out.println(buR.readLine());
}
//System.out.println(hm.get("242"));
return hm;
}
}
@btolfa
Copy link
Author

btolfa commented Apr 5, 2012

Я сделал в коде некоторые замечания, это комментарии которые начинаются с !!
А вообще ты ни фига не понял, что я просил сделать! Ставлю задачу ещё раз:

  • Есть pos*.xls файлы (almetPos.xls, chempos.xls, postkonst.xls - если я правильно помню)
  • Есть ассоциативным массив(Map), состоящий пар ключ - значение. Ключ - это id из базы данных, значение - адрес, строка-столбец этого значения в pos.xls файле. Ассоциативным массив представлен в виде xml или txt файла
  • Нужно написать класс, в котором реализован метод, принимающий на вход pos.xls файл в виде InputStream, ассоциативный массив в в виде Map содержащий id:адрес (указываю конкретно, т.к. сам ты ничего придумать не захотел). Этот метод возвращает ассоциативный массив Map содержащий id:значение из файла pos.xls

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment