Есть ли способ вставить данные из текстового файла в набор данных? - PullRequest
0 голосов
/ 07 января 2011

У меня есть текстовый файл, который выглядит так:

1 \t a
2 \t b
3 \t c
4 \t d

У меня есть набор данных: DataSet ZX = new DataSet();

есть ли способ вставить значения текстового файла в этот набор данных?

заранее спасибо

Ответы [ 5 ]

2 голосов
/ 07 января 2011

Вам придется анализировать файл вручную. Может быть так:

string data = System.IO.File.ReadAllText("myfile.txt");

DataRow row = null;
DataSet ds = new DataSet();
DataTable tab = new DataTable();

tab.Columns.Add("First");
tab.Columns.Add("Second");

string[] rows = data.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string r in rows)
{
    string[] columns = r.Split(new char[] { '\t' },   StringSplitOptions.RemoveEmptyEntries);
    if (columns.Length <= tab.Columns.Count)
    {
        row = tab.NewRow();

        for (int i = 0; i < columns.Length; i++)
            row[i] = columns[i];

         tab.Rows.Add(row);
     }
 }

 ds.Tables.Add(tab);

UPDATE

Если вы не знаете, сколько столбцов в текстовом файле вы можете изменить в моем исходном примере следующим образом (при условии, что число столбцов является постоянным для всех строк):

// ...
string[] columns = r.Split(new char[] { '\t' },  StringSplitOptions.RemoveEmptyEntries);
if (tab.Columns.Count == 0)
{
    for(int i = 0; i < columns.Length; i++)
        tab.Columns.Add("Column" + (i + 1));
}

if (columns.Length <= tab.Columns.Count)
{
// ... 

Также удалите первоначальное создание столбцов таблицы:

// tab.Columns.Add("First");
// tab.Columns.Add("Second")

- Павел

2 голосов
/ 07 января 2011

Конечно,

Определите DataTable, добавьте DataColumn с нужными типами данных,

ReadLine файл, разделите значения по вкладкам и добавьтекаждое значение в виде DataRow для DataTable вызывается NewRow.

. Вот хороший пример кода на MSDN , посмотрите и выполните шаги

1 голос
/ 07 января 2011

Да, создавайте табель данных на лету, см. эту статью , чтобы узнать, как

Читайте файл построчно и добавляйте эти значения в таблицу данных, смотрите эта статья для чтения текста текстового файла

0 голосов
/ 02 июля 2013

Я также хотел бы добавить к коду «volpan» следующее:

String _source = System.IO.File.ReadAllText(FilePath, Encoding.GetEncoding(1253));

Хорошо бы добавить кодировку вашего текстового файла, чтобы вы могли читать данные имой случай экспортировать их после изменения в другой файл.

0 голосов
/ 07 января 2011

Попробуйте это

private DataTable GetTextToTable(string path)
{
    try
    {
        DataTable dataTable = new DataTable
        {
            Columns = {
                {"MyID", typeof(int)},
                "MyData"
            },
            TableName="MyTable"
        };
        // Create an instance of StreamReader to read from a file.
        // The using statement also closes the StreamReader.
        using (StreamReader sr = new StreamReader(path))
        {
            String line;
            // Read and display lines from the file until the end of
            // the file is reached.
            while ((line = sr.ReadLine()) != null)
            {
                string[] words = line.Split(new string[] { "\\t" }, StringSplitOptions.RemoveEmptyEntries);
                dataTable.Rows.Add(words[0], words[1]);
            }
        }
        return dataTable;
    }
    catch (Exception e)
    {
        // Let the user know what went wrong.
        throw new Exception(e.Message);
    }

}

Назовите это как

GetTextToTable(Path.Combine(Server.MapPath("."), "TextFile.txt"));

Вы также можете проверить CSV File Imports in .NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...