Недавно мне нужно было работать с одной статической БД, которая находилась, как не странно, в Excel файле. Простой файл в котором есть три колонки (допустим A,B,C) и примерно две тысячи записей.
Для начала нам нужно сохранить наш Excel файл в другом формате *.csv, берем файл сохранить как и выберем формат тот который показан у меня на картинке:
Зачем мы это делаем? - Все очень просто чтоб было легко все парсить :) Если открыть наш новый *.csv файл через блокнот то увидим, что данные каждого столбца в Excel разделены точкой с запятой. Когда мы открыли в блокноте файл сохраните его как *.txt только, желательно, с utf-8 кодировкой, чтоб не было проблем с украинскими и русскими символами.
Далее перейдем непосредственно к программированию. Я делал все это для Windows 8/RT метро приложений, но для обычных десктопных, помоем, нужно изменить только чтения из файла. И так вот наш код:
Был у меня опыт работы с Office документами на C#, честно скажу впечатления не очень, как то не сложилось ;) намного проще использовать SQLite и тому подобные реляционные БД.Так вот, сейчас я покажу как можно быстро и просто перенести данные с Excel в SQlite, вместив все это в десять строчек кода.
Для начала нам нужно сохранить наш Excel файл в другом формате *.csv, берем файл сохранить как и выберем формат тот который показан у меня на картинке:
Зачем мы это делаем? - Все очень просто чтоб было легко все парсить :) Если открыть наш новый *.csv файл через блокнот то увидим, что данные каждого столбца в Excel разделены точкой с запятой. Когда мы открыли в блокноте файл сохраните его как *.txt только, желательно, с utf-8 кодировкой, чтоб не было проблем с украинскими и русскими символами.
Далее перейдем непосредственно к программированию. Я делал все это для Windows 8/RT метро приложений, но для обычных десктопных, помоем, нужно изменить только чтения из файла. И так вот наш код:
public async void ReadFile()
{
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///MyCsvFile.txt"));
IList<string> readFile = await FileIO.ReadLinesAsync(file);
foreach (var line in readFile)
{
string[] row = line.Split(';');
// rowp[0], row[1], etc ...
}
}
Все очень просто, читаем файл, и с помощью обычного метода split получаем строковой массив элементы которого в файле разделены точкой с запятой.
Далее для записи в БД, все как обычно, создаем модель данных, подключаем БД и добавляем в нее элементы row[i].
Для обычных десктопных, приложений следует заменить только чтения файла, так как таких методов как у windows 8/rt там нет. Вот если что и ссылка на MSDN .
Всем спасибо и удачного ПРОграммирования.
Недавно мне нужно было работать с одной статической БД, которая находилась, как не странно, в Excel файле. Простой файл в котором есть три колонки (допустим A,B,C) и примерно две тысячи записей.
Для начала нам нужно сохранить наш Excel файл в другом формате *.csv, берем файл сохранить как и выберем формат тот который показан у меня на картинке:
Зачем мы это делаем? - Все очень просто чтоб было легко все парсить :) Если открыть наш новый *.csv файл через блокнот то увидим, что данные каждого столбца в Excel разделены точкой с запятой. Когда мы открыли в блокноте файл сохраните его как *.txt только, желательно, с utf-8 кодировкой, чтоб не было проблем с украинскими и русскими символами.
Далее перейдем непосредственно к программированию. Я делал все это для Windows 8/RT метро приложений, но для обычных десктопных, помоем, нужно изменить только чтения из файла. И так вот наш код:
Был у меня опыт работы с Office документами на C#, честно скажу впечатления не очень, как то не сложилось ;) намного проще использовать SQLite и тому подобные реляционные БД.Так вот, сейчас я покажу как можно быстро и просто перенести данные с Excel в SQlite, вместив все это в десять строчек кода.
Для начала нам нужно сохранить наш Excel файл в другом формате *.csv, берем файл сохранить как и выберем формат тот который показан у меня на картинке:
Зачем мы это делаем? - Все очень просто чтоб было легко все парсить :) Если открыть наш новый *.csv файл через блокнот то увидим, что данные каждого столбца в Excel разделены точкой с запятой. Когда мы открыли в блокноте файл сохраните его как *.txt только, желательно, с utf-8 кодировкой, чтоб не было проблем с украинскими и русскими символами.
Далее перейдем непосредственно к программированию. Я делал все это для Windows 8/RT метро приложений, но для обычных десктопных, помоем, нужно изменить только чтения из файла. И так вот наш код:
public async void ReadFile()
{
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///MyCsvFile.txt"));
IList<string> readFile = await FileIO.ReadLinesAsync(file);
foreach (var line in readFile)
{
string[] row = line.Split(';');
// rowp[0], row[1], etc ...
}
}
Все очень просто, читаем файл, и с помощью обычного метода split получаем строковой массив элементы которого в файле разделены точкой с запятой.
Далее для записи в БД, все как обычно, создаем модель данных, подключаем БД и добавляем в нее элементы row[i].
Для обычных десктопных, приложений следует заменить только чтения файла, так как таких методов как у windows 8/rt там нет. Вот если что и ссылка на MSDN .
Всем спасибо и удачного ПРОграммирования.
0 коммент.:
Отправить комментарий