如题
就像这样的柱状图

解决方案 »

  1.   

    如果不保存图片,那就不是转移柱状图的问题,而是怎么把这个柱状图的数据提取出来或者直接利用它的来源数据,调用Excel的接口创建Excel自己的柱状图的问题。一个是数据来源,另一个就是调用Excel接口,可以CreateOleObject('Excel.Application'),看看能不能调用Excel的柱状图功能。查Excel接口帮助。
      

  2.   

    有木有类似的文档的demo啊?
    发个参考下嘛
      

  3.   

    没有必要如此复杂,直接在生成EXCEL时,在EXCEL中创建Chart图了。
      

  4.   

    网上可以搜到。
    例如:http://blog.csdn.net/zang141588761/article/details/51700694
      

  5.   

    来段代码,看看你直接生成Excel和Chart,和我说的有区别的地方。
      

  6.   

    ChartObject就是Excel的嵌入式图表对象。
      

  7.   

    ChartObject就是Excel的嵌入式图表对象。
    有没有代码参考下嘛
      

  8.   

    ChartObject就是Excel的嵌入式图表对象。
    有没有代码参考下嘛
    一会儿发出来,稍等。
      

  9.   

    Excel生成图表。也可以使用Servers页封装好的组件,比较方便,原理是一样的。uses ComObj;
    var
         exlApp,WorkBook1,Sheet1, Chart1, Range1, Series1:Variant;procedure TForm1.Button1Click(Sender: TObject);
    var
         i:integer;
    begin
         try
              exlApp:=CreateOleObject('Excel.Application');
              WorkBook1:=CreateOleObject('Excel.Sheet');
              Chart1:=CreateOleObject('Excel.Chart');
         except
              MessageBox(Handle,'调用Excel失败。','警告',MB_OK+MB_ICONWarning);
              Exit;
         end;
         exlApp.Visible:=False;
         WorkBook1:=exlApp.WorkBooks.Add;
         exlApp.Workbooks[1].Worksheets[1].Name:='Data1';
         //--------------------------------------------
         Sheet1:=exlApp.Workbooks[1].Worksheets['Data1'];
         for i:= 1 to 10 do
         Sheet1.Cells[i, 1]:=i;
         //--------------------------------------------
         Chart1:=exlApp.Charts.Add;
         Chart1.ChartType:=$FFFFEFFC;  //图表类型xl3DColumn
         Range1:=exlApp.Sheets.Item['Data1'].Range['A5:A10'];
         Series1:=Chart1.SeriesCollection;
         Series1.Add(Range1, True);
         exlApp.Visible:=True;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
         if not VarIsEmpty(exlApp) then
         begin
              exlApp.DisplayAlerts:=False;  //不保存退出
              exlApp.Quit;
         end;
    end;
      

  10.   

    引用ComObj了?代码确定正常执行。
      

  11.   

    其他部分不变,改动一下,这个应该可以解决你的报错。procedure TForm1.Button1Click(Sender: TObject);
    var
         i:integer;
    begin
         try
              exlApp:=CreateOleObject('Excel.Application');
              WorkBook1:=CreateOleObject('Excel.Sheet');
         except
              MessageBox(Handle,'调用Excel失败。','警告',MB_OK+MB_ICONWarning);
              Exit;
         end;
         WorkBook1:=exlApp.WorkBooks.Add;
         exlApp.Workbooks[1].Worksheets[1].Name:='Data1';
         //--------------------------------------------
         Sheet1:=exlApp.Workbooks[1].Worksheets['Data1'];
         for i:= 1 to 10 do
         Sheet1.Cells[i, 1]:=i;
         //--------------------------------------------
         Chart1:=Sheet1.ChartObjects.Add(200,0,480,360);
         Chart1.Chart.ChartType:=$FFFFEFFC;  //图表类型xl3DColumn
         //--------------------------------------------
         Series1:=Chart1.Chart.SeriesCollection;
         Range1:=exlApp.Sheets.Item['Data1'].Range['A1:A10'];
         Series1.Add(Range1, True);
         Range1:=exlApp.Sheets.Item['Data1'].Range['A5:A10'];
         Series1.Add(Range1, True);
         exlApp.Visible:=True;
    end;
      

  12.   


    我发现问题了,是我的原因不是你代码的问题,
    因为我的窗体里面有了chart1和series1但不是Variant类型的,所有出错了。
    谢谢哈!稍后还有其他不懂的还要请教下你哦!