Первый столбец файла Excel для помещения в строковую переменную C #? - PullRequest
0 голосов
/ 25 августа 2009

Какой мне нужен идентификатор, чтобы взять первый столбец файла Excel и поместить этот столбец в строковую переменную, но числа, которые будут взяты из Excel, будут разделены пробелом.

Например:

Файл Excel:

1 3 4 56 76 7 +876 23 43 (в столбце)

и строка в C #

номер строки = "1 3 4 56 76 7 876 23 43"

Любой код поможет мне Я установил соединение с файлом Excel и создал набор данных / datatable но теперь я не могу взять эти цифры, как образец выше?

Ответы [ 5 ]

2 голосов
/ 25 августа 2009

Если у вас есть данные в наборе данных ... вы можете сделать что-то вроде этого ...

//// ПОПРОБУЙТЕ ЭТО !!!

DataSet dsExcelContent = new DataSet();


     //Fill from db
        //
         StringBuilder builder = new StringBuilder();
        foreach (DataRow row in dsExcelContent.Tables[0].Rows)
        {


            builder.Append(row[0].ToString());
            builder.Append(" ");


        }
        Console.WriteLine(builder.ToString());

..... Точнее к вашему коду ....

   OleDbConnection objConn = new OleDbConnection(sConnectionString);

        objConn.Open();
        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [sheet1$]", objConn);

        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
        objAdapter1.SelectCommand = objCmdSelect;

        DataSet dsExcelContent = new DataSet();
        DataTable dsExcelContent1 = new DataTable();
        objAdapter1.Fill(dsExcelContent);

        dataGridView1.DataSource = dsExcelContent1;
        objConn.Close();

        int test = dsExcelContent.Tables[0].Rows.Count;

StringBuilder builder = new StringBuilder ();

        foreach (DataRow row in dsExcelContent.Tables[0].Rows)
        {

            builder.Append(row[0].ToString());
            builder.Append(" ");


        }
            //s has the data you want.....
        string s = builder.ToString();

            //REST OF YOUR CODE.....
0 голосов
/ 25 августа 2009

private void Form1_Load (отправитель объекта, EventArgs e) { String sConnectionString = @ "Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = unsorted.xls; Расширенные свойства =" "Excel 12.0; HDR = NO;" "";

        OleDbConnection objConn = new OleDbConnection(sConnectionString);

        objConn.Open();
        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [sheet1$]", objConn);

        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
        objAdapter1.SelectCommand = objCmdSelect;

        DataSet dsExcelContent = new DataSet();
        DataTable dsExcelContent1 = new DataTable();
        objAdapter1.Fill(dsExcelContent);

        dataGridView1.DataSource = dsExcelContent1;
        objConn.Close();

        int test = dsExcelContent.Tables[0].Rows.Count;

       foreach(DataRow row in dsExcelContent.Tables[0].Rows)
        {
            StringBuilder builder = new StringBuilder();
            foreach (DataColumn col in dsExcelContent.Tables[0].Columns)
            {
                builder.Append(row[col].ToString());
                builder.Append(" ");
            }

            string s = builder.ToString();

            this.label1.Text = s;

            string[] numbers = s.Split(' ');

            ArrayList numberList = new ArrayList();

            int i;

            foreach (String num in numbers)
            {
                if (Int32.TryParse(num, out i))
                {
                    numberList.Add(i);

                }
                else
                    Console.WriteLine("'{0}' is not a number!", num);
            }

            this.listBox1.DataSource = numberList;

        }






    }
}
0 голосов
/ 25 августа 2009

Вот что я бы сделал ... сначала откройте таблицу с этим кодом.

xlApp = New Excel.Application
filePath = "FILENAME"
xlWorkBook = xlApp.Workbooks.Open(filePath)
xlWorkSheet = xlWorkBook.Worksheets(1)

Затем прочитайте колонку, как это

For data As Integer = 0 To 8
    Dim obj As Excel.Range = CType(xlWorkSheet.Cells(data, 1), Range)
    If obj.Value IsNot Nothing Then
        MyArray(data) = obj.Value
    Else
        Exit Do
    End If
Next

Тогда у вас должны быть все ваши данные в MyArray, затем переберите и создайте строку с пробелами, и все будет хорошо. Этот код написан на VB, но он должен дать вам хорошее представление о командах и структуре для использования.

0 голосов
/ 25 августа 2009

Теперь вы просто хотите пройтись по строкам в наборе данных:

var numberStr = EmptyStr;
foreach (DataRow dr in MyDataSet.Tables[0].Rows)
{
    numberStr = EmptyStr ? numberStr += dr[0].ToString() : numberStr += " " + dr[0].ToString(); 
}

Обновленное решение

private void Form1_Load(object sender, EventArgs e) 
{
    String s = String.Empty;
    String sConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=unsorted.xls;Extended Properties=""Excel 12.0;HDR=NO;""";
    using (OleDbConnection conn = new OleDbConnection(sConnectionString)) 
    {
        conn.Open();
        DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
        foreach (DataRow schemaRow in schemaTable.Rows) 
        {
            string sheet = schemaRow["TABLE_NAME"].ToString();
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + sheet + "]", conn);
            cmd.CommandType = CommandType.Text;

            DataTable outputTable = new DataTable(sheet);
            output.Tables.Add(outputTable);
            new OleDbDataAdapter(cmd).Fill(outputTable);
        }

        // populate string with value from rows
        foreach (DataRow dr in MyDataSet.Tables[0].Rows)
        {
           s = String.Empty ? s += dr[0].ToString() : s += " " + dr[0].ToString(); 
        }       

        dataGridView1.DataSource = dsExcelContent1;        
        objConn.Close();
    }

    this.label1.Text = s;        
    string[] numbers = s.Split(' ');        
    ArrayList numberList = new ArrayList();        
    int i;        

    foreach (String num in numbers)        
    {            
        if (Int32.TryParse(num, out i))            
        {                
            numberList.Add(i);            
        }            
        else
        {                
            Console.WriteLine("'{0}' is not a number!", num);
        }        
    }        
    this.listBox1.DataSource = numberList;
}
0 голосов
/ 25 августа 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...