首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTable到List<DataTable>

DataTable到List<DataTable>
EN

Stack Overflow用户
提问于 2018-08-09 10:56:03
回答 1查看 66关注 0票数 0

I创建了一个DataTable列表:

代码语言:javascript
复制
List<DataTable> dataTableList = new List<DataTable>();

我创建了一个具有列的临时DataTable:

代码语言:javascript
复制
DataTable tmp = new DataTable();
tmp.Columns.Add("SenderCostCenter" , typeof(String));
tmp.Columns.Add("ActivityType" , typeof(String));
tmp.Columns.Add("Quantity" , typeof(String));
tmp.Columns.Add("Unit", typeof(String));
tmp.Columns.Add("Costcnter" , typeof(String));
tmp.Columns.Add("InternalOrder" , typeof(String));
tmp.Columns.Add("WBSElement" , typeof(String));
tmp.Columns.Add("SalesOrder", typeof(String));
tmp.Columns.Add("SalesOrderItem" , typeof(String));
tmp.Columns.Add("Text" , typeof(String));

然后,我导入了一些数据,并在tmp DataTable中填充了

我在一个循环中重新创建了这个tmp DataTable 13次。

这个循环在另一个循环中,在外部循环中,在内环之后,我想用tmp数据表填充DataTable列表。

这是我的代码:

代码语言:javascript
复制
dataTableList[fs1].Columns.Add("SenderCostSender" , typeof(String));
dataTableList[fs1].Columns.Add("ActivityType", typeof(String));
dataTableList[fs1].Columns.Add("Quantity", typeof(String));
dataTableList[fs1].Columns.Add("Unit", typeof(String));
dataTableList[fs1].Columns.Add("Costcenter", typeof(String));
dataTableList[fs1].Columns.Add("InternalOrder", typeof(String));
dataTableList[fs1].Columns.Add("WBSElement", typeof(String));
dataTableList[fs1].Columns.Add("SalesOrder", typeof(String));
dataTableList[fs1].Columns.Add("SalesOrderItem", typeof(String));
dataTableList[fs1].Columns.Add("Text" , typeof(String));
dataTableList[fs1] = tmp;

fs1是迭代DataTableList的外部循环变量。

数据导入工作正常,但是当程序到达:dataTableList[fs1].Columns.Add("SenderCostSender" , typeof(string));时,我会得到一个System.ArgumentOutOfRangeException错误。

任何帮助我都会感激的,谢谢。

以下是完整的方法:( List<dataTable>是全局的)

代码语言:javascript
复制
 using (var fbd = new FolderBrowserDialog())
            {
                //Folder-Browser-Dialog öffnen
                DialogResult result = fbd.ShowDialog();
                if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
                {
                    //Menge an Excel-Daten rausfinden
                    string[] files = System.IO.Directory.GetFiles(fbd.SelectedPath , "*.xlsx");
                    for (int fs1=0;fs1<=files.Length;fs1++)
                    {
                        //Excel Import
                        Microsoft.Office.Interop.Excel.Application application = new Microsoft.Office.Interop.Excel.Application();
                        Microsoft.Office.Interop.Excel.Workbook workbook = application.Workbooks.Open(files[fs1]);
                        Microsoft.Office.Interop.Excel._Worksheet _Worksheet = workbook.Sheets[1];
                        Microsoft.Office.Interop.Excel.Range range = _Worksheet.UsedRange;

                        //Neues DataTable 
                        DataTable tmp = new DataTable();
                        tmp.Columns.Add("SenderCostCenter" , typeof(String));
                        tmp.Columns.Add("ActivityType" , typeof(String));
                        tmp.Columns.Add("Quantity" , typeof(String));
                        tmp.Columns.Add("Unit", typeof(String));
                        tmp.Columns.Add("Costcnter" , typeof(String));
                        tmp.Columns.Add("InternalOrder" , typeof(String));
                        tmp.Columns.Add("WBSElement" , typeof(String));
                        tmp.Columns.Add("SalesOrder", typeof(String));
                        tmp.Columns.Add("SalesOrderItem" , typeof(String));
                        tmp.Columns.Add("Text" , typeof(String));

                        //DataTable füllen
                        for (int fs2 = 24; fs2 <= range.Rows.Count; fs2++)
                        {
                            //DataRow erstellen & füllen
                            DataRow dataRow = tmp.NewRow();
                            dataRow[0] = Convert.ToString(range.Cells[fs2, 2].Value2);
                            dataRow[1] = Convert.ToString(range.Cells[fs2, 3].Value2);
                            dataRow[2] = Convert.ToString(range.Cells[fs2, 4].Value2);
                            dataRow[3] = Convert.ToString(range.Cells[fs2, 5].Value2);
                            dataRow[4] = Convert.ToString(range.Cells[fs2, 6].Value2);
                            dataRow[5] = Convert.ToString(range.Cells[fs2, 7].Value2);
                            dataRow[6] = Convert.ToString(range.Cells[fs2, 8].Value2);
                            dataRow[7] = Convert.ToString(range.Cells[fs2, 9].Value2);
                            dataRow[8] = Convert.ToString(range.Cells[fs2, 10].Value2);
                            dataRow[9] = Convert.ToString(range.Cells[fs2, 11].Value2);
                            tmp.Rows.Add(dataRow);
                        }

                        //tmp DataTable in die Globale DataTable-List kopieren
                        dataTableList[fs1].Columns.Add("SenderCostSender" , typeof(String));
                        dataTableList[fs1].Columns.Add("ActivityType", typeof(String));
                        dataTableList[fs1].Columns.Add("Quantity", typeof(String));
                        dataTableList[fs1].Columns.Add("Unit", typeof(String));
                        dataTableList[fs1].Columns.Add("Costcenter", typeof(String));
                        dataTableList[fs1].Columns.Add("InternalOrder", typeof(String));
                        dataTableList[fs1].Columns.Add("WBSElement", typeof(String));
                        dataTableList[fs1].Columns.Add("SalesOrder", typeof(String));
                        dataTableList[fs1].Columns.Add("SalesOrderItem", typeof(String));
                        dataTableList[fs1].Columns.Add("Text" , typeof(String));
                        dataTableList[fs1] = tmp;
                    }
                }
            }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-09 11:01:46

代码语言:javascript
复制
DataTable   d = new DataTable();         
List<DataTable> l = new List<DataTable>();
l.Add(d);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51765124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档