我想将一些数字从 Excel 放到数组中。假设我有一个 Excel 文件,其中包含如下数字:
23 34 1 3 100 56 45 43 56 4 87 6 89 9
这只是 excel(或任何文件)中的一列,我想将这些数字作为整数放在 arraylist 中,我不需要将结果作为一个数字,但所有这些数字都是 int 值。
请问有什么帮助吗?
假设上面是一个字符串(和来源无关),您可以执行以下操作:
string s = "23 34 1 3 100 56 45 43 56 4 87 6 89 9";
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);
}
listBox1.DataSource = numberList;
我建议使用List<int>
而不是ArrayList
类型安全。
以下代码使用 DB 连接将 Excel 工作表中的所有值读取到数据集中。然后,您可以选择所需的值。:
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1ReadOnly=False\"";
OleDbConnection objConn = new OleDbConnection(sConnectionString);
objConn.Open();
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + sheetname + "$]", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet dsExcelContent = new DataSet();
objAdapter1.Fill(dsExcelContent);
objConn.Close();
编辑
您没有指定字符串的确切来源,所以如果这个问题是关于如何读取文件或如何从 Excel 电子表格导入数据,您可能应该稍微改写一下您的问题。
编辑 2
替换List<int>
为ArrayList
OP 的愿望(反对更好的设计)。
编辑 3
添加了一个新行以显示 OP 如何将ArrayList
用作ListBox
...的数据源
编辑 4
添加了使用 OleDB 读取 Excel 工作表的代码。
这很容易拆分字符串并将每个项目解析为列表。
String input = "23 34 1 3 100 56 45 43 56 4 87 6 89 9";
List<Int32> result = input
.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select(i => Int32.Parse(i))
.ToList();
请注意,此代码没有错误处理。如果项目不是有效整数,则会引发异常。您可以使用Int32.TryParse()
. 您最好在没有 LINQ 的情况下执行此操作,但您也可以使用以下低效率的 LINQ 代码。
Int32 dummy;
List<Int32> result = input
.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Where(i => Int32.TryParse(i, out dummy))
.Select(i => Int32.Parse(i))
.ToList();
没有 LINQ。
String input = "23 34 1 3 100 56 h45 43 56 4 87 6 89 9";
Int32 dummy;
List<Int32> result = new List<Int32>();
foreach (String item in input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
{
Int32 number;
if (Int32.TryParse(item, out number))
{
result.Add(number);
}
else
{
// Handle invalid items.
}
}
您还可以导出为文件格式,即 xml 或 csv,然后从您的 c# 程序中解析它。