Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2010, 22:32   #1
LT.
The IT Crowd
Пользователь
 
Аватар для LT.
 
Регистрация: 10.10.2008
Сообщений: 41
Сообщение *.csv в С#

Здравстуйте, All!
Хочу реализовать считывание инфы из файла *.csv и выводить конкретное поле(столбец) файла в TextBox по нажатию кнопки. Используя С# и VS2008/2010.

До этого реализовывал "вынимая" из БД, все получилось. А вот из *.csv - не могу.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click_1(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection 
            ("server=BLA-PC; database=bladb; uid=sa; pwd=bla");
            try 
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("select first from bla-bla", conn);
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                    textBox1.Text += reader["first"].ToString() + "\r\n";
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            
        }

    }
}
Мне говорили, что можно реализовать, всего лишь изменив SqlConnection на что-то, а вот на что именно, мне не сказали...

Подскажите плиз.
Заранее благодарю.
"Одни наслаждаются дождём, другие просто промокают." - Роджер Миллер
LT. вне форума Ответить с цитированием
Старый 16.02.2010, 12:35   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Цитата:
Сообщение от LT. Посмотреть сообщение
Мне говорили, что можно реализовать, всего лишь изменив SqlConnection на что-то, а вот на что именно, мне не сказали...
Вот пример того, что тебе предложили(сам не пробывал):
http://csharpsimplified.wordpress.co...-in-datatable/

Вообще, CSV - это формат файла, причем текстового. В нем все разделено неким разделителем(обычно это запятая, но спецификация поддерживает и другие). По простому чтение csv выглядит так:

Читаем строку, разбиваем её по разделителю и получаем массив string. Далее по необходимости приводим к нужным типам и раскидываем данные куда надо.
Также не забываем, что обычно 1-ая строка - строка с заголовками таблицы.

Вот простой пример:
Код:
StreamReader sr = new StreamReader("file.csv");
string inputLine = "";

String[] values = null;
while ((inputLine = input.ReadLine()) != null)
{
values = inputLine.Split(",");
}
input.Close();
Вот пример готовой библиотеки: http://www.codeproject.com/KB/database/CsvReader.aspx
Hollander вне форума Ответить с цитированием
Старый 18.02.2010, 21:59   #3
LT.
The IT Crowd
Пользователь
 
Аватар для LT.
 
Регистрация: 10.10.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Hollander Посмотреть сообщение
Вот пример того, что тебе предложили(сам не пробывал):
http://csharpsimplified.wordpress.co...-in-datatable/

Вообще, CSV - это формат файла, причем текстового. В нем все разделено неким разделителем(обычно это запятая, но спецификация поддерживает и другие). По простому чтение csv выглядит так:

Читаем строку, разбиваем её по разделителю и получаем массив string. Далее по необходимости приводим к нужным типам и раскидываем данные куда надо.
Также не забываем, что обычно 1-ая строка - строка с заголовками таблицы.

Вот простой пример:
Код:
StreamReader sr = new StreamReader("file.csv");
string inputLine = "";

String[] values = null;
while ((inputLine = input.ReadLine()) != null)
{
values = inputLine.Split(",");
}
input.Close();
Вот пример готовой библиотеки: http://www.codeproject.com/KB/database/CsvReader.aspx

Спасибо, просмотрел материал, все хорошо описано.
Но все таки реализовал по другому:

Код:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Odbc;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            {
                string connStr = @"DefaultDir=C:\temp;Driver={Microsoft Text Driver (*.txt; *.csv)}";
                
                OdbcConnection conn = new OdbcConnection(connStr);
                //try
                {
                    conn.Open();
                   //DataTable dt = new DataTable();
                    OdbcCommand cmd = new OdbcCommand("select birth from asd.csv", conn);
                    OdbcDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                        textBox1.Text += reader["birth"].ToString() + "\r\n";
                }
                //catch (OdbcException)
                {
                //MessageBox.Show("Файл не найден");
                }
               //finally
                {
                  conn.Close();
                }
            }
        }
    }
}
Теперь вот хочу попробовать реализовать после считывания из файла - добавление считанного в БД MS SQL.

Не могли бы Вы, что небудь посоветовать?!
"Одни наслаждаются дождём, другие просто промокают." - Роджер Миллер
LT. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт в CSV Nooned Microsoft Office Access 7 11.02.2015 18:02
Из SQL в CSV ! eholod Фриланс 4 09.10.2009 10:03
CSV формат Jarik Microsoft Office Excel 2 24.07.2009 17:28
Экспорт в csv и импорт из csv cent Microsoft Office Excel 12 28.12.2008 19:50
Из TXT в CSV CodeName47 Помощь студентам 17 22.01.2008 09:14