全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3900
推到 Plurk!
推到 Facebook!

Excel中Chart的DataLabels.NumberFormatLocal的問題

尚未結案
Dabaw
一般會員


發表:1
回覆:2
積分:0
註冊:2004-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-12 15:02:38 IP:203.112.xxx.xxx 未訂閱
各位前輩請問一下:    DataLabels.NumberFormatLocal 如何設定?  我這樣設定:     DataLabels.NumberFormatLocal := '0.00%' 會得到這樣的錯誤訊息:     "Invalid variant operation"    我的圓餅圖中數值想顯示至小數第二位。    原始程式如下:
//********************************
//xlsAP: TExcelApplication;
//xlsWB: TExcelWorkbook;
//xlsWS: TExcelWorksheet;
//xlsCT: TExcelChart;
//********************************
    //樞紐分析表
    xlsAP.Charts.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,iLcID);
    xlsCT.ConnectTo(xlsAP.Charts[1] as _Chart);
    xlsCT.Name := '投資比例';
    xlsCT.ChartType := xl3DPie;
    xlsCT.SetSourceData(xlsWS.Range[_CellCorFir, _Cell], xlColumns);
    xlsCT.ApplyDataLabels(xlDataLabelsShowLabelAndPercent, False, EmptyParam, True);
    SeriesCollection := xlsCT.SeriesCollection(1);
    //下面這一行錯誤
    SeriesCollection.DataLabels.Select.NumberFormatLocal := '0.00%';
    xlsCT.Location(xlLocationAutomatic, '投資比例');
謝謝各位前輩。
ajaxhuang
一般會員


發表:2
回覆:5
積分:1
註冊:2003-03-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-18 16:39:35 IP:218.163.xxx.xxx 未訂閱
procedure TForm1.aaaaa;
var
  xlsAp: TExcelApplication;
  xlsWB: TExcelWorkbook;
  xlsWS: TExcelWorksheet;
  xlsCT: TExcelChart;
  SC: SeriesCollection;
  Series1: Series;
  DL: DataLabel;
  iLcID: integer;
  i, j: integer;
begin
  iLcID := GetUserDefaultLCID;
  xlsAp:= TExcelApplication.Create(nil);
  xlsWB:= TExcelWorkbook.Create(nil);
  xlsWS:= TExcelWorksheet.Create(nil);
  xlsCT:= TExcelChart.Create(nil);
  xlsAP.Connect;
  xlsAP.Visible[iLcID] := true;
  xlsWB.ConnectTo(xlsAP.Workbooks.Add(null,0));
  xlsWS.ConnectTo(xlsWB.Worksheets[1] as _Worksheet);
  xlsAP.Charts.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,iLcID);
  xlsCT.ConnectTo(xlsAP.Charts[1] as _Chart);
  xlsCT.Name := '投資比例';
  xlsCT.ChartType := xl3DPie;
  xlsCT.SetSourceData(xlsWS.Range['A1', 'B5'], xlColumns);
  xlsCT.ApplyDataLabels(xlDataLabelsShowLabelAndPercent, False, EmptyParam, True);
  SC := xlsCT.SeriesCollection as SeriesCollection;
  xlsWs.Cells.Item[1,2] := 'aaa';
  xlsWs.Cells.Item[2,1] := 'A';
  xlsWs.Cells.Item[2,2] := '10';
  xlsWs.Cells.Item[3,1] := 'B';
  xlsWs.Cells.Item[3,2] := '20';
  xlsWs.Cells.Item[4,1] := 'C';
  xlsWs.Cells.Item[4,2] := '30';
  xlsWs.Cells.Item[5,1] := 'D';
  xlsWs.Cells.Item[5,2] := '40';
  for i := 1 to SC.Count do
  begin
    for j := 1 to 4 do
    begin
      DL := SC.Item(i).DataLabels(j) as DataLabel;
      DL.NumberFormat := '0.00%';
    end;
  end;
  xlsCT.Location(xlLocationAutomatic, '投資比例');
end;
不過要先知道數列中資料的數量...我想程式中應該可以記錄到... 試用看看吧~
Dabaw
一般會員


發表:1
回覆:2
積分:0
註冊:2004-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-01 10:25:44 IP:203.112.xxx.xxx 未訂閱
引言:
procedure TForm1.aaaaa;
var
  xlsAp: TExcelApplication;
  xlsWB: TExcelWorkbook;
  xlsWS: TExcelWorksheet;
  xlsCT: TExcelChart;
  SC: SeriesCollection;
  Series1: Series;
  DL: DataLabel;
  iLcID: integer;
  i, j: integer;
begin
  iLcID := GetUserDefaultLCID;
  xlsAp:= TExcelApplication.Create(nil);
  xlsWB:= TExcelWorkbook.Create(nil);
  xlsWS:= TExcelWorksheet.Create(nil);
  xlsCT:= TExcelChart.Create(nil);
  xlsAP.Connect;
  xlsAP.Visible[iLcID] := true;
  xlsWB.ConnectTo(xlsAP.Workbooks.Add(null,0));
  xlsWS.ConnectTo(xlsWB.Worksheets[1] as _Worksheet);
  xlsAP.Charts.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,iLcID);
  xlsCT.ConnectTo(xlsAP.Charts[1] as _Chart);
  xlsCT.Name := '投資比例';
  xlsCT.ChartType := xl3DPie;
  xlsCT.SetSourceData(xlsWS.Range['A1', 'B5'], xlColumns);
  xlsCT.ApplyDataLabels(xlDataLabelsShowLabelAndPercent, False, EmptyParam, True);
  SC := xlsCT.SeriesCollection as SeriesCollection;
  xlsWs.Cells.Item[1,2] := 'aaa';
  xlsWs.Cells.Item[2,1] := 'A';
  xlsWs.Cells.Item[2,2] := '10';
  xlsWs.Cells.Item[3,1] := 'B';
  xlsWs.Cells.Item[3,2] := '20';
  xlsWs.Cells.Item[4,1] := 'C';
  xlsWs.Cells.Item[4,2] := '30';
  xlsWs.Cells.Item[5,1] := 'D';
  xlsWs.Cells.Item[5,2] := '40';
  for i := 1 to SC.Count do
  begin
    for j := 1 to 4 do
    begin
      DL := SC.Item(i).DataLabels(j) as DataLabel;
      DL.NumberFormat := '0.00%';
    end;
  end;
  xlsCT.Location(xlLocationAutomatic, '投資比例');
end;
不過要先知道數列中資料的數量...我想程式中應該可以記錄到... 試用看看吧~
我在宣告 "SC: SeriesCollection" 有誤,如下: Constant or type identifier expected. 是我宣告方式錯誤嗎?還是還需要 Use 哪一個 Unit?
Dabaw
一般會員


發表:1
回覆:2
積分:0
註冊:2004-04-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-01 10:28:37 IP:203.112.xxx.xxx 未訂閱
我在宣告 "SC: SeriesCollection" 有誤,如下: Constant or type identifier expected. 是我宣告方式錯誤嗎?還是還需要 Use 哪一個 Unit?
系統時間:2024-05-17 14:37:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!