Доброго времени суток.
У меня есть вопрос...
Существует Excel'евский файл большого размера (~100Мб), состоящий из вступления произвольной длины,
с определённой метки файл приобретает вид таблицы с двумя столбцами.
Требуется осуществить произвольный доступ к нужной строке.
Пролистывать весь файл каждый раз, когда требуется, бессмысленно.
А StringReader не может осуществить нужные мне действия.
Здравствуйте, M.A.V., Вы писали:
MAV>Доброго времени суток. MAV>У меня есть вопрос... MAV>Существует Excel'евский файл большого размера (~100Мб), состоящий из вступления произвольной длины, MAV>с определённой метки файл приобретает вид таблицы с двумя столбцами.
MAV>Требуется осуществить произвольный доступ к нужной строке.
Определить файл системным источником данных через ODBC и использовать что нибудь вроде DataReader ...
можно проиндексировать сторки один раз, правда не понятно как часто изменяется ваш файл.
Здравствуйте, dammer, Вы писали:
D>Здравствуйте, M.A.V., Вы писали:
MAV>>Доброго времени суток. MAV>>У меня есть вопрос... MAV>>Существует Excel'евский файл большого размера (~100Мб), состоящий из вступления произвольной длины, MAV>>с определённой метки файл приобретает вид таблицы с двумя столбцами.
MAV>>Требуется осуществить произвольный доступ к нужной строке.
D>Определить файл системным источником данных через ODBC и использовать что нибудь вроде DataReader ... D>можно проиндексировать сторки один раз, правда не понятно как часто изменяется ваш файл.
Спасибо, dammer.
Файл не меняется. Сделал через BinaryReader.
Там есть произвольный доступ, через Position.
Мне повезло, что в каждой строке записано одинаковое количество байт.
Здравствуйте, M.A.V., Вы писали:
MAV> Файл не меняется. Сделал через BinaryReader. MAV> Там есть произвольный доступ, через Position. MAV> Мне повезло, что в каждой строке записано одинаковое количество байт.
В текстовом тоже можно, через свойтсво StreamReader.InnerStream.Position. Только перед каждым таким переходом надо сбрасывать внутренний буфер StreamReader'а, иначе он будет возвращать бредятину. Для этого есть метод StreamReader.DiscardBufferedData().