我想把Excel中的一些数字放到数组中。 假设我有一个包含这样的数字的Excel文件:
23 34 1 3 100 56 45 43 56 4 87 6 89 9
这只是excel(或任何文件)中的一列 我想把那些numers作为整数放在arraylist中,我不需要将结果作为一个数字,但所有这些数字都是int值。
请帮忙吗?
答案 0 :(得分:1)
假设上面是一个字符串(并且源无关紧要),您可以执行以下操作:
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
来确保类型安全。
以下代码使用数据库连接将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
在OP的愿望上取代List<int>
ArrayList
(反对更好的设计)。
编辑3
添加了一个新行,以向OP展示如何将ArrayList
用作ListBox
的数据源......
编辑4
添加了使用OleDB读取Excel工作表的代码。
答案 1 :(得分:1)
分割字符串并将每个项目解析为列表非常容易。
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.
}
}
答案 2 :(得分:0)
您也可以导出为文件格式,即xml或csv,然后从您的c#程序中解析它。