ipmitool 发表于 2018-7-30 10:14:26

[已解决]Excel_Chart如何改成讀取檔案再繪圖

本帖最后由 ipmitool 于 2018-7-31 10:20 编辑

Excel_Chart 這個範例如何改成讀取檔案(list.csv)再繪出圖表





chzj589 发表于 2018-7-31 07:57:02

ipmitool 发表于 2018-7-31 07:48
好酷喔, 可以分享code給我學習學習嗎?

只读取200行

#include <Excel.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Const $xlColumns = 2
Const $xl3DPieExploded = 70
Const $xlDataLabelsShowValue = 2
TrayTip("小苹果提示", "窗口程序正在加载数据,请等待...", 3, 1)
$begin = TimerInit()
Local $oExcel = ObjCreate("Excel.Application") ; 创建Excel对象
$oExcel.Visible = 1
$oExcel.SheetsInNewWorkbook = 1 ; 设置要创建的工作表数量
; 或打开现有文件:
$cInput = "list.csv"
Local $sFilePath = @ScriptDir & '\' & $cInput ;& '.xlsx';@ScriptDir & "\Book3.xlsx";
Local $oBook = $oExcel.WorkBooks.Open($sFilePath, Default, False)
Local $oSheet = $oBook.Worksheets.Item(1) ; 工作表的名称
Local $r = 2
For $i = 0 To 201
        If $i = 201 Then
                $oSheet.Range("j2").Offset($i, 0).Formula = "=SUM(j2:j201)"
        Else
                $oSheet.Range("j2").Offset($i, 0).Formula = "=SUM(B" & $r & ":I" & $r & ")"
                $r += 1
        EndIf
Next
Local $width = 500, $height = 450
; 右对齐单元格I13:
Local $left = $oSheet.Range("J49015").Left - $width ; Cell J13:left = cell I13:right!
Local $top = $oSheet.Range("I49015").Top
; 创建一个对象图
Local $oChart = $oSheet.ChartObjects.Add($left, $top, $width, $height).Chart
With $oChart
        .ChartType = $xl3DPieExploded ; 设置图表类型
        .SetSourceData($oSheet.Range("j2:j99"), $xlColumns) ; 图表的数据区域
        .SeriesCollection(1).XValues = "='Sheet1'!j2S1:j201S1" ; 标签图例集(名称来自A2:A10)
        .HasTitle = True ;激活标题
        .ChartTitle.Characters.Text = "总数200行 (合计 = " & StringFormat('%.2f', $oSheet.Range('j203').Value) & ")" ; 标题
        .ApplyDataLabels($xlDataLabelsShowValue, False, True) ; 细分标注值
EndWith
_Excel_BookClose($oExcel, False)
$dif = TimerDiff($begin) / 1000
MsgBox(0, "导出速度", '读取' & '   用时' & Int($dif) & '秒', 2)
TrayTip("", "", 1, 0)




chzj589 发表于 2018-7-30 13:57:00

你的list.csv文件太大,很费劲

duxing 发表于 2018-7-30 17:12:09

funcerp_xxx($phe)
        $xls = ObjGet($phe)
        If Not IsObj($xls) Then
                MsgBox(0, "对象错误", $phe)
        Else
        With $xls.activesheet
                $erp_x = .usedrange.value
                $erp_x = .parent.application.transpose($erp_x)
                .parent.close(False)
        EndWith
        Return$erp_x
        EndIf
        EndFunc

弄成数组,折腾完再搞进EXCEL

chzj589 发表于 2018-7-30 17:25:39


ipmitool 发表于 2018-7-31 07:48:08

duxing 发表于 2018-7-30 17:12
funcerp_xxx($phe)
        $xls = ObjGet($phe)
        If Not IsObj($xls) Then


會不會很折騰啊? 哈哈

ipmitool 发表于 2018-7-31 07:48:34

chzj589 发表于 2018-7-30 17:25


好酷喔, 可以分享code給我學習學習嗎?
页: [1]
查看完整版本: [已解决]Excel_Chart如何改成讀取檔案再繪圖