I want to add charts in my excel and for that I am using Microsoft.Office.Interop.Excel. First I am doing some excel data modifications using System.Data.OleDb. So there are two cases in my situation
The code is as follow :
This is where i am using OLEDB to modify data in excel :
static void Step1(OleDbConnection pathConnection)
{
Console.WriteLine("Creating new sheet 'DataWithTimePerTask' and adding columns 'Total Time including setup' and 'Total Time only for script'");
var app = ConfigurationManager.AppSettings;
string query1 = app["createDataWithTimePerTaskTable"];
string query2 = app["selectEndedSetup"];
string query3 = app["selectEndedStarted"];
try
{
OleDbCommand cmd = new OleDbCommand(query1, pathConnection);
cmd.ExecuteNonQuery();
cmd = new OleDbCommand(query2, pathConnection);
using (OleDbDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
if(dr[0].ToString() != "" && dr[1].ToString() != "")
{
TimeSpan time = Convert.ToDateTime(dr[0].ToString()) - Convert.ToDateTime(dr[1].ToString());
OleDbCommand command = new OleDbCommand(string.Format("update [DataWithTimePerTask$] set [Total Time including setup]=\"{0}\" where [ATP Task Id]={1}", time, dr[2]), pathConnection);
command.ExecuteNonQuery();
}
}
}
cmd = new OleDbCommand(query3, pathConnection);
using (OleDbDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
if (dr[0].ToString() != "" && dr[1].ToString() != "")
{
TimeSpan time = Convert.ToDateTime(dr[0].ToString()) - Convert.ToDateTime(dr[1].ToString());
OleDbCommand command = new OleDbCommand(string.Format("update [DataWithTimePerTask$] set [Total Time only for script]=\"{0}\" where [ATP Task Id]={1}", time, dr[2]), pathConnection);
command.ExecuteNonQuery();
}
}
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
This is for the charts :
The error is at this line :
var chartObject = charts.Add(60, 10, 300, 300) as Microsoft.Office.Interop.Excel.ChartObject;
static void CreateChart(string filename)
{
string topLeft = "B1";
string bottomRight = "B";
string topLeft1 = "A1";
string bottomRight1 = "A";
var application = new Application();
var workbook = application.Workbooks.Open(filename);
var worksheet = workbook.Worksheets[1] as
Microsoft.Office.Interop.Excel.Worksheet;
var charts = worksheet.ChartObjects() as
Microsoft.Office.Interop.Excel.ChartObjects;
var chartObject = charts.Add(60, 10, 300, 300) as
Microsoft.Office.Interop.Excel.ChartObject; // The error is on this line
var chart = chartObject.Chart;
bottomRight += worksheet.UsedRange.Columns["B:B", Type.Missing].Rows.Count;
bottomRight1 += worksheet.UsedRange.Columns["A:A", Type.Missing].Rows.Count;
// Set chart range.
var range = worksheet.get_Range(topLeft, bottomRight);
chart.SetSourceData(range);
var series = chart.SeriesCollection();
series[1].Name = "abc";
series[1].XValues = worksheet.get_Range(topLeft1, bottomRight1);
series[1].ChartType = XlChartType.xlLine;
workbook.Save();
workbook.Close();
application.Quit();
}
So please help , Thanks in advance.
User contributions licensed under CC BY-SA 3.0