【问题标题】:Trying to create an excel chart in a XLS file with data尝试在包含数据的 XLS 文件中创建 excel 图表
【发布时间】:2016-07-02 04:38:44
【问题描述】:

我目前的问题是数据显示就像它在 excel 文件中的假设一样,但图表显示不正确。我正在尝试方法 1:http://www.dotnetperls.com/excel。 我已经看过这个了:Excel Interop Apply Chart Template

图表:(http://imgur.com/a/btgWT) 上图是我得到的,下图是我想要的。

    string tempPath = Path.GetTempPath();
        //C:\appdata...\LicenseCheck
    string folderPath = string.Format(@"{0}\LicenseCheck", tempPath);
      //The csv file with the XMAX license usage stats
    string secondPath = string.Format(@"{0}\{1}_Report_Stats_{2}_{3}.csv", 
        folderPath, productName, lastCheckedDate.Month, lastCheckedDate.Year);

    var application = new Application();
        var workbook = application.Workbooks.Open(secondPath);
        var worksheet = workbook.Worksheets[1] as Worksheet;
        object misValue = System.Reflection.Missing.Value;

        // Add chart.
        var charts = worksheet.ChartObjects() as ChartObjects;
        var chartObject = charts.Add(60, 10, 300, 300) as ChartObject;
        var chart = chartObject.Chart;

        // Set chart range.
        var range = worksheet.get_Range("A1", "C25");
        chart.SetSourceData(range);

        // Set chart properties.
        chart.ChartType = XlChartType.xlColumnClustered;
        chart.ChartWizard
        (
            Source: range
           // Title: "graphTitle",
           // CategoryTitle: "xAxis",
           // ValueTitle: "yAxis"
        );

        chartObject.Chart.ApplyChartTemplate(@"C:\\LicenseUsageStatsTemplate.crtx");

        // Save.
        workbook.SaveAs("Stats.xls", XlFileFormat.xlWorkbookNormal);
        workbook.Close(true, misValue, misValue);
        application.Quit();

        releaseObject(worksheet);
        releaseObject(workbook);
        releaseObject(application);

【问题讨论】:

  • 无法在 CSV 文件中创建图表。我认为您需要使用 SaveAs 将文件另存为 Excel 工作簿 (xlsx)。
  • 所以我将string secondPath = string.Format(@"{0}\{1}_Report_Stats_{2}_{3}.csv", folderPath, productName, lastCheckedDate.Month, lastCheckedDate.Year); 中的文件名更改为.xlsx,interop 无法打开 xlsx 文件。然后,我将其更改为.xls。但是,图表仍然没有显示出来。
  • 更改扩展名不会强制 Excel 保存为不同的文件格式。阅读语言参考中的SaveAs 方法。您会发现有一个用于设置文件格式的参数 - 使用它。
  • @CindyMeister 谢谢!我已经更新了问题,因为图表显示不正确。我想以编程方式编辑图表。我们可以像我上面那样使用模板(目前不工作)。但是,我不认为它更可取。

标签: c# visual-studio office-interop excel-interop


【解决方案1】:

发现必须在服务器上安装 MS Office 才能使用 Interop。因此,最终使用了 EPPlus。这是一个使用 OfficeOpenXML 的很棒的库。

【讨论】:

    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2013-07-31
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多