как прочитать данные из *.csv
как прочитать данные из *.csv
как прочитать данные из *.csv , может прииведете пример.
Re: как прочитать данные из *.csv
В assets я закинул файл file.csv:Dull писал(а):как прочитать данные из *.csv , может прииведете пример.
Код: Выделить всё
1,2,3
4,5,6
7,8,9
Код: Выделить всё
final String separator = ",";
try {
BufferedReader br = new BufferedReader(new InputStreamReader(getAssets().open("file.csv")));
String s = "";
String[] data;
while ( (s = br.readLine()) != null ) {
data = s.split(separator);
Log.d("tmp", data[0] + " " + data[1] + " " + data[2]);
}
} catch (IOException e) {
// TODO Auto-generated catch block
}
а массив data содержит разобранную строку
Как-то так )
Re: как прочитать данные из *.csv
Супер! это то что я искал. Спасибо!
Подскажите пожалуйста, как таблицу втянуть в SQLite.
Подскажите пожалуйста, как таблицу втянуть в SQLite.
Re: как прочитать данные из *.csv
Создаем таблицу и insert-им туда данные. Об этом в уроке 34 инфа есть.Xroft писал(а):Супер! это то что я искал. Спасибо!
Подскажите пожалуйста, как таблицу втянуть в SQLite.
Re: как прочитать данные из *.csv
Спасибо! Разобрался.damager82 писал(а):Создаем таблицу и insert-им туда данные. Об этом в уроке 34 инфа есть.Xroft писал(а):Супер! это то что я искал. Спасибо!
Подскажите пожалуйста, как таблицу втянуть в SQLite.
Втягивал как то вот так:) (понимаю что криво, только учусь)
Код: Выделить всё
private void myImport() {
final String separator = ";";
String name, ost, kol_in_box, tov_price;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(getAssets().open("csv_import2.csv")));
String s = "";
String[] data;
while ( (s = br.readLine()) != null ) {
data = s.split(separator);
Log.d(TAG, data[0] + " " + data[1] + " " + data[2] + " " + data[3] + " " + data[4]);
Log.d(TAG, "Втянули строку, едем дальше");
name = data[1];
ost = data[2];
kol_in_box = data[3];
tov_price = data[4];
Log.d(TAG, "Пытаемся втянуть в базу товар " +data[1]);
long id = mDbHelper.InsertCSV(name, ost, kol_in_box, tov_price);
if (id > 0) {
mRowId = id;
}
}
} catch (IOException e) { }
}
Как это можно вылечить?
Re: как прочитать данные из *.csv
Здравая логика подсказывает что надо или переопределить перменные name, ost, kol_in_box, tov_price как String или втягивать напрямую - сразу в базу. Или же (скорее всего) сам BufferedReader не понимает корректно кириллицу ...Xroft писал(а):В итоге в базу место кириллицы лезут кракозябры(.
Как это можно вылечить?
Помогите разобратся пожалуйста.
Re: как прочитать данные из *.csv
getAssets().open - выдает кучу байтов. Кодировка еще не при делах.Xroft писал(а):В итоге в базу место кириллицы лезут кракозябры(. Как это можно вылечить?
BufferedReader работает уже с символами, а не байтами, кодировка уже не при делах.
За кодировку тут ответственный - InputStreamReader. Именно он переводит байты в символы. А чтобы ему это правильно сделать, он должен знать, по какой кодировке ему работать. По дефолту он юзает UTF-8, скорее всего. А вам надо ему явно указать, чтобы он Windows-1251 юзал.
Используйте другой конструктор:
Код: Выделить всё
new InputStreamReader(getAssets().open("csv_import2.csv"), "Windows-1251")
Re: как прочитать данные из *.csv
Да, это то что доктор прописал... и снова огромное спасибо за помощь!:)damager82 писал(а):getAssets().open - выдает кучу байтов. Кодировка еще не при делах.Xroft писал(а):В итоге в базу место кириллицы лезут кракозябры(. Как это можно вылечить?
BufferedReader работает уже с символами, а не байтами, кодировка уже не при делах.
За кодировку тут ответственный - InputStreamReader. Именно он переводит байты в символы. А чтобы ему это правильно сделать, он должен знать, по какой кодировке ему работать. По дефолту он юзает UTF-8, скорее всего. А вам надо ему явно указать, чтобы он Windows-1251 юзал.
Используйте другой конструктор:
Если у вас файл в Windows-1251, конечно )Код: Выделить всё
new InputStreamReader(getAssets().open("csv_import2.csv"), "Windows-1251")
Re: как прочитать данные из *.csv
Подскажите, а можно ли потом заменить базу лежащую с assets?
К примеру, данные обновились и загрузить другой файл без пересборки приложения?
Заранее благодарен!
К примеру, данные обновились и загрузить другой файл без пересборки приложения?
Заранее благодарен!
Re: как прочитать данные из *.csv
я думаю, никак нельзя, только пересобирать.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: как прочитать данные из *.csv
Нужно попробовать следующим образом: переименовать готовый apk в zip.razmus писал(а):Подскажите, а можно ли потом заменить базу лежащую с assets?
К примеру, данные обновились и загрузить другой файл без пересборки приложения?
Заранее благодарен!
И в папке assets подменить файл, затем переименовать обратно zip в apk.
Если нет в android проверки целостности файла, думаю получится.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: как прочитать данные из *.csv
Здравствуйте.
Тоже учусь импортировать из CSV и попалась "тупая" проблемка:
Есть CSV файл сохранен в UTF-8.
Первые строки:
Из него тупо копирую в эклипс первую строку для проверки структуры, но дальше при сравнении скопированого и считаного андроидом он говорит что это две большие разницы
Полный код:
В чем может быть мой косяк?
Нутром чувствую что гдето здесь
но понять не могу... можето потому что ночь уже
Спасибо. И спокойной ночи.
Тоже учусь импортировать из CSV и попалась "тупая" проблемка:
Есть CSV файл сохранен в UTF-8.
Первые строки:
Код: Выделить всё
art;in2013;dil
2104507021;5,61;
2104507022;5,61;
2105507021;5,71;
Полный код:
Код: Выделить всё
// Оновлення прайс-листа
void readPriceFile() {
try {
// открываем поток для чтения
BufferedReader br = new BufferedReader(new InputStreamReader(
openFileInput(FILEPRICE)));
String str = "";
String str1 = "art;in2013;dil"; //Початок CSV з прайсом...
// читаем содержимое
str = br.readLine();
if (str != null) {
str.trim();
if (str == str1) {
while ((str = br.readLine()) != null) {
String[] RowData = str.split(";");
art = RowData[0];
in2013 = RowData[1];
dil = RowData[2];
}
} else {
Toast.makeText(this, "Некоректний тип файлу.("+str+")",Toast.LENGTH_SHORT).show();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(this, "Файл "+FILEPRICE+" не знайдено!",Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
Нутром чувствую что гдето здесь
Код: Выделить всё
if (str == str1) {...
Спасибо. И спокойной ночи.
Последний раз редактировалось kk_gor 08 ноя 2013, 11:15, всего редактировалось 1 раз.
Re: как прочитать данные из *.csv
за такое сравнение строк в java нужно наказывать принуждением прослушивания курса java на неделю!
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: как прочитать данные из *.csv
kk_gor писал(а): Нутром чувствую ято гдето здесьКод: Выделить всё
if (str == str1) {...
Код: Выделить всё
str.equals(str1)
Кусок кода для истории, подходит к первому в теме примеру.
Код: Выделить всё
final File DATABASE_DIRECTORY = new File(
Environment.getExternalStorageDirectory(), "ImportExport");
final File Path = new File(DATABASE_DIRECTORY,"file.csv");
BufferedReader br;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(Path)));