C# 通过datagrid行进行迭代以导出到excel(再次)
我正在尝试将dataGrid行导出到Excel工作表。 因为我正在从WinForms(dataGridView)切换到WPF (dataGrid)到目前为止,我基本上对WPF一无所知 我需要你的帮助 也许有人可以告诉我如何改变我的循环 或者我必须做些什么来填充这些行 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
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];
}
}