Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка txt в таблицу, Необходимо загрузить фаил в Таблицу 
:(
    Опции темы
Smersh
  Дата 20.11.2007, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Разрабатываю прогу возникла проблема:
 Имеются текстовые файлы.
 - Количество столбцов различное.

 Необходимо загрузить в таблицу.
 - Разделение по столбцам используя знак табуляции и пробел.
PM MAIL   Вверх
Wizard_Memfis
Дата 20.11.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 12.2.2007
Где: г. Донецк, Украин а

Репутация: 2
Всего: 4



Считай строку!Split разбей ее с помощью знаков табуляции и пробела на под строки,  и записуй их в таблицу. Потом считывай следующую строку...!Вперед!Если что, расскажу подробнее smile 
--------------------
www.binary-studio.com
PM MAIL WWW ICQ Skype   Вверх
Smersh
Дата 26.11.2007, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Никак не могу сообразить и найти как сделать.
Я считываю строку, разбиваю с помощью Split (Спс за подсказку)

А вот дальше не могу.
Как встретится знак табуляции или пробела создаю ячейку в таблице и записываю эту переменную туда.
Считываю дальше. Как заканчивается строка переходим к следующей строке и  ячейки в таблице создаются уже на следующей строке.

Не могу сделать добавление ячейки и переход на новую строку таблицы. Понимаю что как то просто должно быть но голова глючит.  smile 

P.S. Я делаю в Web Form. Но, думаю код отличаться не будет.  smile 

Это сообщение отредактировал(а) Smersh - 26.11.2007, 08:28
PM MAIL   Вверх
Experimenter
Дата 26.11.2007, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 4
Всего: 17



Smersh, у тебя МСДН есть? И какой контрол для таблицы пользуешь?
Код

    // Set the column header names.
    dataGridView1.Columns[0].Name = "Recipe";
    dataGridView1.Columns[1].Name = "Category";
    dataGridView1.Columns[2].Name = "Main Ingredients";
    dataGridView1.Columns[3].Name = "Rating";

    // Populate the rows.
    string[] row1 = new string[] { "Meatloaf", "Main Dish", "ground beef",
        "**" };
    string[] row2 = new string[] { "Key Lime Pie", "Dessert", 
        "lime juice, evaporated milk", "****" };
    string[] row3 = new string[] { "Orange-Salsa Pork Chops", "Main Dish", 
        "pork chops, salsa, orange juice", "****" };
    string[] row4 = new string[] { "Black Bean and Rice Salad", "Salad", 
        "black beans, brown rice", "****" };
    string[] row5 = new string[] { "Chocolate Cheesecake", "Dessert", 
        "cream cheese", "***" };
    string[] row6 = new string[] { "Black Bean Dip", "Appetizer", 
        "black beans, sour cream", "***" };
    object[] rows = new object[] { row1, row2, row3, row4, row5, row6 };

    foreach (string[] rowArray in rows)
    {
        dataGridView1.Rows.Add(rowArray);
    }



--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Smersh
Дата 27.11.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Experimenter, Подключаясь к инету только. И еще пользуюсь http://msdn.microsoft.com.

Просто создавать столбцы не подходит. Кажется. Их количество различное может быть.
И в Web нет dataGridView зато есть GridView.

Я вот так пытаюсь делать.

Код

 protected void Button7_Click(object sender, EventArgs e)
    {
              
                try
              {
                  StreamReader StrR=File.OpenText("D:\\1.txt");
                  string strLine;

                //S*  strLine = StrR.ReadLine();
                //S* TextBox1.Text = strLine;

                  while(null!=(strLine=StrR.ReadLine()))
                  {
                      TextBox1.Text = strLine;
                      string delimStr = "\t ";
                      char[] delimiter = delimStr.ToCharArray();
                      string words;
                      string[] split = null;
                      
                      words = TextBox1.Text;
                      for (int x = 1; x <= 50; x++)
                      {
                          split = words.Split(delimiter, x);

                          foreach (string s in split)
                          {  
                              //S*Для проверки *S\\       
                              TextBox2.Text = s;
                              
                              
                              /*
                               Сюда вставляется код
                               * -создаем поле в GridView1
                               * -вставляем s в это поле
                              */

                   //         break;
                          }
                          
                      }
                      /*
                       Cюда вставляю код
                       * -создаем новую строку в GridView1
                      */

               //         break;
                  }

                    StrR.Close();
              }
              catch
                {
                  TextBox1.Text="No";
                } 
    }


Может можно как то по другому сделать или я чего то не понимаю?
PM MAIL   Вверх
Experimenter
Дата 27.11.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 4
Всего: 17



Smersh, может я и неправ, но что мешает провести аналогичные операции с GridView? Те же самые Rows и Columns.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Smersh
Дата 28.11.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Experimenter, Они отличаются. И подобным способом не получается. (У меня)
Попробывал создать объект таблицу. Потом загрузить его в DataGrid через DataGrid1.DataSource =название таблицы. В вин. приложение всё прикрасно. В веб. ни ошибок ни результата.  smile 

Может я что-то усложняю. Надо загрузить txt в DataGrid или GridView в веб интерфейсе. 
Я уже не могу сообразить что еще можно попробывать.  smile 
PM MAIL   Вверх
Experimenter
Дата 28.11.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 4
Всего: 17



Код

      DataSet ds = GetData(queryString);
      if (ds.Tables.Count > 0)
      {
        AuthorsGridView.DataSource = ds;
        AuthorsGridView.DataBind();
      }
так делал?


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Smersh
Дата 29.11.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Experimenter,  Не писал 
Цитата
GridView1.DataBind(). 
smile
Теперь приступлю к главному-загрузке данных из txt в GridView1.
Надеюсь за сегодня сделаю. Если что опять напишу, рыдая мысленно на взрыд.  smile 

PM MAIL   Вверх
Smersh
Дата 30.11.2007, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Последний, надеюсь, рывок с этой проблемой.
Весь код занесения txt в GridView записан в кнопке.

Код

protected void Button7_Click(object sender, EventArgs e)
    {
        DataTable To = new DataTable("To");
        DataColumn myDataColumn;
        int i=0;
        int j = 0;
        
                try
              {
                  StreamReader StrR = File.OpenText("D:\\1.txt");
                  string strLine;
                  DataRow newRow;

                  while(null!=(strLine=StrR.ReadLine()))
                  {
                      i = 0; 
                    //S*Просто просмотр строки*S\\
                      TextBox1.Text = strLine;

                      string delimStr = " \t";
                      char[] delimiter = delimStr.ToCharArray();
                      string words;
                      string[] split = null;

                      words = strLine;
                 //     words = TextBox1.Text;

              //S*Добавляем строку*S\\ 
                     newRow = To.NewRow();
                     
                      for (int x = 1; x <= 30; x++)
                      {
                          split = words.Split(delimiter, x);
                          
                          foreach (string s in split)
                          {  
                              //S*Для проверки *S\\       
                              TextBox2.Text =TextBox2.Text+"-"+s;

                              i++;
                              if (j == 0)
                              {
                                  //S*Создаем колонки *S\\
                                  
                                  myDataColumn = new DataColumn();
                                  myDataColumn.DataType = Type.GetType("System.String");
                                  myDataColumn.AllowDBNull = true;
                                  myDataColumn.ColumnName = Convert.ToString(i);
                                  To.Columns.Add(myDataColumn);
                              }

                           //S*Вставляем значения в строки*S\\
                              newRow[i-1] = s;

                          }
                          
                      }
                      j = 1;
                      To.Rows.Add(newRow);

                      GridView1.DataSource = To;
                      GridView1.DataBind();
                  }

                    StrR.Close();
              }
              catch
                {
                  TextBox1.Text="No";
                } 
    }


Проблема в том, что в таблицу выводилось весь процесс разбивки, а надо конечный результат разбивки Split-ом . (Вместо 15-30 строк получается около 400). 
PM MAIL   Вверх
Smersh
Дата 3.12.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



На исправление использования Split-а наплевал. Просто сделал вывод только последних 20 строк. (Т.к. количество столбцов в файлах для загрузки от 13 до 20).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0929 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.