DataGrid到Excel?

Nat*_*ath 4 c# wpf

我有一个在WPF中创建的程序.它显示DataGrid来自MySQL数据库的数据.我想要做的是允许用户将内容导出DataGrid到Excel文件.这可能与WPF有关吗?

当我使用此处显示的方法时:https://www.outcoldman.ru/en/blog/show/201

导入到xls文件的唯一行是标题.

Man*_*noj 7

我也在寻找一些simillar来帮助将datagrid中的数据导出到excel中,但是没有找到任何有效的东西.我刚刚将DataGrid的内容转换为字符串的2D数组,并使用interop dll导出它.

代码看起来像这样:

    Excel.Application xlApp;
    Excel.Workbook xlWorkBook;
    Excel.Worksheet xlWorkSheet;
    object misValue = System.Reflection.Missing.Value;
    Excel.Range rangeToHoldHyperlink;
    Excel.Range CellInstance;
    xlApp = new Excel.Application();
    xlWorkBook = xlApp.Workbooks.Add(misValue);

    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
    xlApp.DisplayAlerts = false;
    //Dummy initialisation to prevent errors.
    rangeToHoldHyperlink = xlWorkSheet.get_Range("A1", Type.Missing);
    CellInstance = xlWorkSheet.get_Range("A1", Type.Missing);

    for (int i = 0; i < NumberOfCols; i++)
    {
            for (int j = 0; j <= NumberOfRows; j++)
            {
                xlWorkSheet.Cells[j + 1, i + 1] = DataToWrite[j][i];
            }
     }
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找一些格式化,那么它们也受到支持.我想添加一个超链接,以下代码执行此操作:

 CellInstance = xlWorkSheet.Cells[j + 1, i + 1];

                xlWorkSheet.Hyperlinks.Add(
                    CellInstance,
                    DataToWrite[j][i],
                    Type.Missing,
                    "Hover Text Comes Here",
                    "Text to be displayed");
Run Code Online (Sandbox Code Playgroud)

如果您希望第一行是标题,可以按如下方式突出显示它们:

Excel.Range Range1 = xlWorkSheet.get_Range("A1");
Range1.EntireRow.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);
Range1.EntireRow.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightSkyBlue);
Range1.EntireRow.Font.Size = 14;
Range1.EntireRow.AutoFit();
Run Code Online (Sandbox Code Playgroud)

最后将excel保存在所需的路径中:

xlWorkBook.SaveAs(@FilePath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close();
Run Code Online (Sandbox Code Playgroud)

对互操作的引用添加如下:

Right Click on the Project name -> Click "Add reference" -> Goto "COM" tab -> Search for "Microsoft Excel Object Library" click "OK" to add the reference.
Run Code Online (Sandbox Code Playgroud)

您必须使用以下命名空间:

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
Run Code Online (Sandbox Code Playgroud)