Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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
C# 通过datagrid行进行迭代以导出到excel(再次)_C#_Wpf_Excel_Datagrid - Fatal编程技术网

C# 通过datagrid行进行迭代以导出到excel(再次)

C# 通过datagrid行进行迭代以导出到excel(再次),c#,wpf,excel,datagrid,C#,Wpf,Excel,Datagrid,我正在尝试将dataGrid行导出到Excel工作表。 因为我正在从WinForms(dataGridView)切换到WPF (dataGrid)到目前为止,我基本上对WPF一无所知 我需要你的帮助 也许有人可以告诉我如何改变我的循环 或者我必须做些什么来填充这些行 Excel工作表的单元格 我已经阅读了所有关于这个问题的文章,但是 似乎找不到适合我的话题 这就是我填写列名的方法 工作完美: for (int i = 1; i < dataGrid.Columns.Count + 1; i

我正在尝试将dataGrid行导出到Excel工作表。 因为我正在从WinForms(dataGridView)切换到WPF (dataGrid)到目前为止,我基本上对WPF一无所知 我需要你的帮助

也许有人可以告诉我如何改变我的循环 或者我必须做些什么来填充这些行 Excel工作表的单元格

我已经阅读了所有关于这个问题的文章,但是 似乎找不到适合我的话题

这就是我填写列名的方法 工作完美:

for (int i = 1; i < dataGrid.Columns.Count + 1; i++)
{
    Excel.Range BackgroundColor;
    BackgroundColor = xlWorkSheet.get_Range("a9", "j9");
    BackgroundColor.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.RoyalBlue);

    AxlEx.Cells[9, i] = dataGrid.Columns[i - 1].Header;
}

我如何才能让它工作?

我不知道是否有必要调试您的代码。但是,我想显示我的工作代码,以便将数据从
DataGrid
导出到
MS Excel

最好将此工作从UI线程转移到
ThreadPool

 using Excel = Microsoft.Office.Interop.Excel;//add this library

 Task.Run(() => {                    
                // load excel, and create a new workbook
                Excel.Application excelApp = new Excel.Application();
                excelApp.Workbooks.Add();

                // single worksheet
                Excel._Worksheet workSheet = excelApp.ActiveSheet;

                // column headings
                for (int i = 0; i < YourDataTable.Columns.Count; i++)
                {
                    workSheet.Cells[1, (i + 1)] = YourDataTable.Columns[i].ColumnName;
                }

                // rows
                for (int i = 0; i < YourDataTable.Rows.Count; i++)
                {
                    // to do: format datetime values before printing
                    for (int j = 0; j < YourDataTable.Columns.Count; j++)
                    {
                        workSheet.Cells[(i + 2), (j + 1)] = YourDataTable.Rows[i][j];
                    }
                }
                excelApp.Visible = true;
            });
使用Excel=Microsoft.Office.Interop.Excel//添加此库
Task.Run(()=>{
//加载excel,并创建新工作簿
Excel.Application excelApp=新的Excel.Application();
excelApp.Workbooks.Add();
//单一工作表
Excel.\u工作表工作表=excelApp.ActiveSheet;
//列标题
for(int i=0;i
我不知道是否有必要调试您的代码。但是,我想显示我的工作代码,以便将数据从
DataGrid
导出到
MS Excel

最好将此工作从UI线程转移到
ThreadPool

 using Excel = Microsoft.Office.Interop.Excel;//add this library

 Task.Run(() => {                    
                // load excel, and create a new workbook
                Excel.Application excelApp = new Excel.Application();
                excelApp.Workbooks.Add();

                // single worksheet
                Excel._Worksheet workSheet = excelApp.ActiveSheet;

                // column headings
                for (int i = 0; i < YourDataTable.Columns.Count; i++)
                {
                    workSheet.Cells[1, (i + 1)] = YourDataTable.Columns[i].ColumnName;
                }

                // rows
                for (int i = 0; i < YourDataTable.Rows.Count; i++)
                {
                    // to do: format datetime values before printing
                    for (int j = 0; j < YourDataTable.Columns.Count; j++)
                    {
                        workSheet.Cells[(i + 2), (j + 1)] = YourDataTable.Rows[i][j];
                    }
                }
                excelApp.Visible = true;
            });
使用Excel=Microsoft.Office.Interop.Excel//添加此库
Task.Run(()=>{
//加载excel,并创建新工作簿
Excel.Application excelApp=新的Excel.Application();
excelApp.Workbooks.Add();
//单一工作表
Excel.\u工作表工作表=excelApp.ActiveSheet;
//列标题
for(int i=0;i
我发现了问题

for (int i = 0; i < dataGrid.Items.Count-1; i++)
            {
                DataRowView aux = (DataRowView)dataGrid.Items[i];

                for (int j = 0; j < aux.Row.ItemArray.Length; j++)
                {
                    //Console.WriteLine(string.Format("{0}-{1}", j, aux.Row.ItemArray[j]));
                    AxlEx.Cells[i + 10, j + 1] = aux.Row.ItemArray[j];
                }
            }
for(int i=0;i
我不得不减去(dataGrid.Items.Count-1),因为dataGrid中有一个额外的空行,这似乎是导致问题的原因。 由于空字段返回值导致的Pobably???
数据网格

我发现了问题

for (int i = 0; i < dataGrid.Items.Count-1; i++)
            {
                DataRowView aux = (DataRowView)dataGrid.Items[i];

                for (int j = 0; j < aux.Row.ItemArray.Length; j++)
                {
                    //Console.WriteLine(string.Format("{0}-{1}", j, aux.Row.ItemArray[j]));
                    AxlEx.Cells[i + 10, j + 1] = aux.Row.ItemArray[j];
                }
            }
for(int i=0;i
我不得不减去(dataGrid.Items.Count-1),因为dataGrid中有一个额外的空行,这似乎是导致问题的原因。 由于空字段返回值导致的Pobably???
数据网格

您的
数据网格的
项目来源是什么
ObservableCollection
DataTable
?您好,请打开它的一个DataTable您的
项目
数据网格的
来源是什么
ObservableCollection
DataTable
?您好,请将其升级为DataTable
for (int i = 0; i < dataGrid.Items.Count-1; i++)
            {
                DataRowView aux = (DataRowView)dataGrid.Items[i];

                for (int j = 0; j < aux.Row.ItemArray.Length; j++)
                {
                    //Console.WriteLine(string.Format("{0}-{1}", j, aux.Row.ItemArray[j]));
                    AxlEx.Cells[i + 10, j + 1] = aux.Row.ItemArray[j];
                }
            }