展开全部
用OLE的方法可以满足你的条件:
我的示例:
一个在D盘的xls
using System.Data;
using System.Data.OleDb;
using System.Data.Common;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace MyForm
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ "D:\\a.xls" // 文件路径
+ ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
string sql = "SELECT * FROM [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, "Sheet1");
OleConn.Close();
Chart chart1 = new Chart();
ChartArea care = new ChartArea();
Legend leg = new Legend();
Series[] ss = new Series[2]; // 因为我的示例有两个列,所以两个系列
ss[0] = new Series("series a");
ss[1] = new Series("series b");
var reader = OleDsExcle.CreateDataReader();
foreach (var item in reader)
{
// 把两列数据分别插入不同的series
DbDataRecord r = item as DbDataRecord;
for (int i = 0; i < r.FieldCount; i++)
ss[i].Points.AddY(r.GetDouble(i));
}
// 显示
chart1.ChartAreas.Add(care);
chart1.Legends.Add(leg);
chart1.Series.Add(ss[0]);
chart1.Series.Add(ss[1]);
Controls.Add(chart1);
}
}
}
运行效果:
追问
你这个是直方图吧,我要画曲线图,只把Y的值给chart画不了吧
追答
除了Points.AddY,
还有Points.AddXY啊。
chart话什么是你自己控制的啊。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询