Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel文件中放入字符串变量C#的第一列?_C#_String - Fatal编程技术网

excel文件中放入字符串变量C#的第一列?

excel文件中放入字符串变量C#的第一列?,c#,string,C#,String,我需要什么id来获取excel文件的第一列,并将该列放入字符串变量中,但将从excel中获取的数字将用空格分隔 例如: Excel文件: 一, 3. 4. 56 76 7. 876 23 43 (列中) 和C中的字符串# 字符串编号=“1 3 4 56 76 7 876 23 43” 任何代码都会帮助我 我已经与excel文件建立了连接,并创建了dataset/datatable 但现在我不能把这些数字作为上面的样本 有一个链接-下面是我要做的…首先用下面的代码打开电子表格 xlApp = Ne

我需要什么id来获取excel文件的第一列,并将该列放入字符串变量中,但将从excel中获取的数字将用空格分隔

例如:

Excel文件:

一, 3. 4. 56 76 7. 876 23 43 (列中)

和C中的字符串#

字符串编号=“1 3 4 56 76 7 876 23 43”

任何代码都会帮助我 我已经与excel文件建立了连接,并创建了dataset/datatable
但现在我不能把这些数字作为上面的样本

有一个链接-

下面是我要做的…首先用下面的代码打开电子表格

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编写的,但它应该让您对要使用的命令和结构有一个很好的了解。

您现在只想在数据集中的行之间循环:

var numberStr = EmptyStr;
foreach (DataRow dr in MyDataSet.Tables[0].Rows)
{
    numberStr = EmptyStr ? numberStr += dr[0].ToString() : numberStr += " " + dr[0].ToString(); 
}
更新的解决方案


如果您在数据集中有数据…您可以这样做

////试试这个

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=新的StringBuilder()

私有void Form1\u加载(对象发送方、事件参数e) { String sConnectionString=@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=unsorted.xls;扩展属性=”“Excel 12.0;HDR=NO;”“”


如何将您的代码和我的代码结合起来并实现我需要的功能/?您不必手动创建DataTable…当您在适配器上调用Fill时,它将创建tableError 1 foreach语句无法对“System.Data.DataTable”类型的变量进行操作,因为“System.Data.DataTable”不包含“GetEnumerator”的公共定义C:\Users我现在收到此错误?\Administrator\Documents\Visual Studio 2005\Projects\Merge-JoinTest\Form1.cs 42 12 Merge-JoinTestreplace dsExcelContent.Tables[0]替换dsExcelContent.Tables[0]。Rows…我的原始代码适用于我的。您可能正在使用旧版本的framework.replace dsExcelContent.Tables[0]使用dsExcelContent.Tables[0]。ForEach中的行是否确定数据位于您创建的表中?如果您不打算使用类型化数据集,则可能需要手动将该表添加到数据集…dsExcelContent.Tables.add(dsExcelContent1);
   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)
        {

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


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

            //REST OF YOUR CODE.....
        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;

        }






    }
}