0

Interop.Excel を使用してデータテーブルからデータをエクスポートし、折れ線グラフも生成しています。

この方法でデータからExcelにデータを正常にエクスポートできました

public static bool Export(System.Data.DataTable dt, string sheetName)
{
    object Missing = System.Reflection.Missing.Value;
    Excel.Application oXL;
    Excel.Workbook oWB;
    Excel.Worksheet oSheet;
    Excel.Range oRange;

    try
    {
        // Start Excel and get Application object. 
        oXL = new Excel.Application();

        // Set some properties 
        oXL.Visible = false;
        oXL.DisplayAlerts = false;

        // Get a new workbook. 
        oWB = oXL.Workbooks.Add(Missing);

        // Get the Active sheet 
        oSheet = (Excel.Worksheet)oWB.ActiveSheet;
        oSheet.Name = sheetName;

        oSheet.Cells[1, 1] = "Daily Finished Job History " + DateTime.Now.ToString("dd/MM/yyyy");

        oSheet.get_Range("A1", "A1").ColumnWidth = 13;
        oSheet.get_Range("B1", "B1").ColumnWidth = 13;
        oSheet.get_Range("C1", "C1").ColumnWidth = 25;
        oSheet.get_Range("A1", "C1").Font.Size = 14;

        oSheet.get_Range("A1", "C1").Font.Bold = true;
        oSheet.get_Range("A1", "C1").Merge(true);
        oSheet.get_Range("A1", "C1").Cells.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

        oSheet.get_Range("A3", "C3").Font.Bold = true;

        int rowCount = 3;
        for (int i = 1; i < dt.Columns.Count + 1; i++)
        {
            oSheet.Cells[rowCount, i] = dt.Columns[i - 1].ColumnName;
        }

        foreach (DataRow dr in dt.Rows)
        {
            rowCount += 1;
            for (int i = 1; i < dt.Columns.Count + 1; i++)
            {
                oSheet.Cells[rowCount, i] = dr[i - 1].ToString();
            }
        }

        // Resize the columns 
        oRange = oSheet.get_Range(oSheet.Cells[1, 1],
        oSheet.Cells[rowCount, dt.Columns.Count]);
        //oRange.EntireColumn.AutoFit();

        // Save the sheet and close 
        oSheet = null;
        oRange = null;

        string strParentDirectory = GetParentDirectory();
        strParentDirectory = strParentDirectory + "\\Data";
        if (!Directory.Exists(strParentDirectory))
        {
            Directory.CreateDirectory(strParentDirectory);
        }
        string strFileName = strParentDirectory + "\\DailyFinishedJobHistory_" + DateTime.Now.ToString("yyyyMMdd") + ".xls";
        if (File.Exists(strFileName))
        {
            File.Delete(strFileName);
        }
        FileStream file = new FileStream(strFileName, FileMode.Create);
        file.Close();

        oWB.SaveAs(strFileName, Excel.XlFileFormat.xlWorkbookNormal,
            Missing, Missing, Missing, Missing,
            Excel.XlSaveAsAccessMode.xlExclusive,
            Missing, Missing, Missing,
            Missing, Missing);
        oWB.Close(Missing, Missing, Missing);
        oWB = null;
        oXL.Quit();
    }
    catch
    {
        throw;
    }
    finally
    {
        // Clean up 
        // NOTE: When in release mode, this does the trick 
        GC.WaitForPendingFinalizers();
        GC.Collect();
        GC.WaitForPendingFinalizers();
        GC.Collect();
    }

    return true;
}

public static string GetParentDirectory()
{
    System.IO.DirectoryInfo myDirectory = new DirectoryInfo(Environment.CurrentDirectory);
    return myDirectory.Parent.Parent.FullName;
}

今、データテーブルのデータに基づいて同じシートにグラフを生成したいと考えています。

私のExcelファイルは次のようになります ここに画像の説明を入力

このリンクからチャートを生成するための記事とコードをいくつか読みました http://www.dotnetbull.com/2011/09/exporting-pie-chart-into-excel-file.html http://csharp.net-informations.com /excel/csharp-excel-chart.htm http://www.daniweb.com/software-development/csharp/threads/80834/c-and-excel-chart-ranges

しかし、折れ線グラフを生成するコードをまだ理解できていません。ここで指定した画像のように、同じシートにグラフを生成するのに役立つ人がいると助かります。

ありがとう

4

1 に答える 1