从CSV文件外部创建Excel图表

Min*_*Ant 3 c# csv excel graph

我有一堆数据,我将其保存为.csv(逗号分隔值)格式.在excel中,我可以通过手动选择数据并点击图表轻松创建此条形图.

但是,我想通过单击按钮在外部执行此操作.

理想情况下,我在C#中点击了一个按钮.这会调用一个生成我的.csv文件的方法,然后调用一个创建excel表的excel函数,并在其中创建图形.

不确定如何去做,或者excel甚至支持这样的东西,更不用说csv文件了!

谢谢.

Sid*_*out 10

继我的评论之后,这是一个例子.无需使用第三方库.Excel具有制作图表所需的所有内容.打开csv也不像在Excel中打开任何工作簿.

为了更好地理解,让我们创建一个sample.csv并将其置于C:其中

在此输入图像描述

在C#中创建一个新表单,放置一个按钮并设置对Excel对象库的引用.接下来,在按钮的单击事件中粘贴此代码

经过试验和测试

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

Namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        Public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            Microsoft.Office.Interop.Excel.Application xlexcel;
            Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;

            object misValue = System.Reflection.Missing.Value;
            xlexcel = new Excel.Application();

            var xlWorkBooks = xlexcel.Workbooks;

            xlexcel.Visible = true;


            xlWorkBooks.OpenText("C:\\Sample.csv", misValue, misValue, Excel.XlTextParsingType.xlDelimited,
                                 Excel.XlTextQualifier.xlTextQualifierNone, misValue, misValue,
                                 misValue, misValue, misValue, misValue, misValue, misValue, misValue,
                                 misValue, misValue, misValue, misValue);

            // Set Sheet 1 as the sheet you want to work with
            xlWorkSheet = (Excel.Worksheet)xlWorkBooks[1].Worksheets.get_Item(1);

            xlWorkSheet.Shapes.AddChart(misValue,misValue,misValue,misValue,misValue).Select();

            //~~> Make it a Line Chart
            xlexcel.ActiveChart.ApplyCustomType(Excel.XlChartType.xlLineMarkers);

            //~~> Set the data range
            xlexcel.ActiveChart.SetSourceData(xlWorkSheet.Range["$A$1:$B$6"]);

            //uncomment this if required
            //xlWorkBooks[1].Close(true, misValue, misValue);
            //xlexcel.Quit();

            //releaseObject(xlWorkSheet);
            //releaseObject(xlWorkBook);
            //releaseObject(xlexcel);
        }

        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Unable to release the Object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

在此输入图像描述