QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2835|回复: 4
收起左侧

[求助] 求将明细表另存为excel的api函数

[复制链接]
发表于 2018-11-1 15:52:06 | 显示全部楼层 |阅读模式 来自: 中国浙江杭州
工程图
主题分类用于问题归类:

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
求将工程图的明细表另存为excel格式的api函数,或将明细表指定单元格数据读出写入excel也行,拜托了。
+ {) ]' t/ o' n, T3 ^" }0 J$ s
发表于 2018-11-1 18:41:27 | 显示全部楼层 来自: 中国广东佛山
不是可以直接保存成excel吗?
 楼主| 发表于 2018-11-2 08:48:26 | 显示全部楼层 来自: 中国浙江杭州
maichengyou 发表于 2018-11-1 18:41* {2 `. g- [+ R+ [, m: u( r
不是可以直接保存成excel吗?

0 R7 R; K2 Y7 I( O# m$ r是呀,不过我是在做关于这个的二次开发插件,所以想通过代码自动实现这个过程。
发表于 2018-11-2 09:26:51 | 显示全部楼层 来自: 中国陕西西安
看看这一段程序
+ H; E- t/ s/ E

  1. & A+ ]& n' b5 L1 b/ l9 y9 g
  2. '----------------------------????BOM?????--------------------------# z5 c' d9 d- q- R
  3.   `9 w! ^4 o, P8 S" ~# R
  4. Private Function TableToExcel(ByVal part As ModelDoc2, _
    + z; V7 ^( g! W2 N7 Y# Q, j
  5.                               ByVal inExcelName As String) As Boolean$ c0 I- X1 j4 V. L% K: r, M2 i
  6. 5 s# J+ w* x! b8 q' @; g$ }) l
  7.     Dim exCOUNT      As Integer# @4 z+ E: I! z# Y1 L
  8.     Dim swBomFeat    As SldWorks.BomFeature+ w! T" g, O- K! K: I7 H7 B7 [
  9.     Dim vTableArr    As Variant3 W' v. A7 }$ M
  10.     Dim vTable       As Variant  d! N; a9 N0 O! @) _
  11.     Dim swTable      As Variant1 S; Z) ~9 A* }1 O
  12.     Dim swFeat       As SldWorks.feature3 L# @3 U5 R; E7 n- Q0 e
  13.     Dim swWeldmentCutListFeat   As SldWorks.WeldmentCutListFeature
    ' u' v7 Q4 \" i, V
  14.     Dim vWeldCutListAnnotations As Variant
    - p4 i0 N& i3 T/ {8 G3 T
  15.     Dim WeldForI     As Integer; ?8 h4 a$ @2 `0 E4 |- T; W9 N  U
  16.     Dim WeldForJ     As Integer, k) e. G+ N) e
  17.     Dim a1           As Integer' ?2 F) `; W+ b& U5 Z
  18.     Dim a2           As Integer
    % H+ Y; m! B9 j% F- i( ]& x
  19.     Dim s            As String7 M9 [' I# _+ S4 V) V4 |& Q) a
  20.     Dim s1           As String" O$ P- q' j, W
  21.     Dim s2           As String
    5 G$ L' c& o( ~8 S
  22.     Dim f1           As Single* \# h+ \4 x% \1 E
  23.     Dim f2           As Single
    # q6 F' A' y: T1 {* ?) Z
  24.     Dim ExcelName    As String
    5 Q, S" }: r; m# P0 r; O
  25.     Dim textName     As String
    ; E: R& B+ r$ }4 @$ D5 c. H8 N
  26.     Dim oRes         As New ADODB.Recordset1 m* G  D. Q5 X7 Z7 P  k# o  \
  27.     Dim oConn        As New ADODB.Connection
    # I& [2 i2 ~, M6 n# p6 G+ J; c
  28.     Dim myTable()    As String, t, @$ p3 Y, C3 y
  29.     Dim bTableIn     As Boolean  '??????д??
    8 \- c: T" O/ D* J. G4 j
  30.     Dim c1           As String   '????????8 B# v& l1 l. s& D5 m
  31.     Dim SQLstr       As String   '??????SQL????" C) p0 \3 ~% R" Q$ N; ~+ W% k
  32.    
    * }8 l- U4 G$ |$ F0 K
  33.    
    # X- o8 [1 ~, U9 a# v
  34.     On Error GoTo ToExcelErr3 ?; b$ P0 e' c7 }
  35.     bTableIn = False. a( D" }: l  J. H
  36.     ExcelName = inExcelName + ".xls"
    2 m& X. U" t, B. Y
  37.     Set swFeat = part.FirstFeature
    * P% Y$ h5 |! S- ?: z
  38.     Do While Not swFeat Is Nothing
    - C* L: B  q* q; K4 y, ^: C
  39.         If swFeat.GetTypeName = "BomFeat" Then; {$ f. M2 A9 ~3 m. d
  40.          '--------------- ????????????----------/ D. L9 z5 X; T5 o* ?. w
  41.             Set swBomFeat = swFeat.GetSpecificFeature2" ^8 B3 }$ m+ C! Q
  42.             vTableArr = swBomFeat.GetTableAnnotations
    / K! e8 {8 g, i$ |7 T! L
  43.             For Each vTable In vTableArr
    ' h3 f2 @! B9 _1 X9 B# A! u& c
  44.                 Set swTable = vTable9 @1 a7 ]8 E& P# @+ h- ?& u( r3 w
  45.                 exCOUNT = swTable.RowCount - 2
    5 V4 G6 {% u! e( b$ i7 @
  46.                 bTableIn = True. z+ i7 |: {8 V0 {
  47.                 ReDim myTable(0 To exCOUNT, 0 To 8) As String  '????????
    / U% a# t0 ~$ U# s
  48.                 For a1 = 0 To exCOUNT9 ]7 Y9 k7 Y$ h3 S
  49.                     For a2 = 0 To swTable.ColumnCount
    $ r; m0 ?% K0 c( D. l$ z
  50.                         If IsNull(swTable.text(a1, a2)) Then
    2 T5 c) C: u2 W) h, A
  51.                             s = " "6 J9 h7 A# w2 C9 t6 Q# p& w* n
  52.                         Else
    2 S/ k! L! s2 Y0 T
  53.                             s = swTable.text(a1, a2)! q) _5 j( t& A; Z1 }
  54.                             'If Len(s) = 0 Then s = " "
    . R6 S4 {) u5 }8 p- m
  55.                         End If/ ~5 i1 ^: o* Y. @2 l9 M
  56.                         myTable(a1, a2) = s# R7 B+ e: ^! {3 W4 ~% r& x* b( c
  57.                     Next a22 N5 S' |$ b/ z: U
  58.                 Next a1% }5 s! N3 s  g2 u) u
  59.             Next vTable4 |" L, d/ K: w2 ^6 v
  60.         End If
    . u/ {  R2 B; ?
  61.              9 }; @6 ?4 \9 G. M
  62.         If swFeat.GetTypeName = "WeldmentTableFeat" Then
    7 q( j3 t! J1 \) n) C$ S
  63.              '-----------------?????и?????????-----------
    : r' d$ x, `- g
  64.             Set swWeldmentCutListFeat = swFeat.GetSpecificFeature2% l/ h+ s* U; X( b7 l
  65.             vWeldCutListAnnotations = swWeldmentCutListFeat.GetTableAnnotations
    4 ]2 i6 i$ J; j. \9 h# F& @
  66.             WeldForJ = vWeldCutListAnnotations(0).ColumnCount - 16 G$ p8 ]2 v. K- s" W- D- `3 Y
  67.             exCOUNT = vWeldCutListAnnotations(0).RowCount - 2" d) V0 {2 J0 `1 f( g) K" R: D
  68.             bTableIn = True
    : g  E- d1 a. O& g
  69.             ReDim myTable(0 To exCOUNT, 0 To 8) As String# }8 g5 m& b* S0 B/ _# U
  70.             For a1 = 0 To exCOUNT
    " p* `0 T) e+ z
  71.                 For a2 = 0 To WeldForJ& Y6 k& i% ]. a8 g& \
  72.                     If IsNull(vWeldCutListAnnotations(0).text(a1, a2)) Then
    3 \* Y2 |5 I5 o% w1 T2 p2 `0 \1 u
  73.                         s = " "/ F5 _: K# r3 e% W$ d( a
  74.                     Else' A. t7 m" i) m2 ]' |$ Y
  75.                         s = vWeldCutListAnnotations(0).text(a1, a2)
    ( K2 ]& x9 I7 K0 g* v) N
  76.                         'If Len(s) = 0 Then s = " "3 G# |6 z) X5 N
  77.                     End If0 ~/ l# @* Z5 E& r
  78.                     myTable(a1, a2) = s
    4 t; f. X9 b3 p) M$ M/ p
  79.                 Next a2
    ) \- d5 p* _# _, k  C
  80.             Next a18 c2 r$ Q2 Q; h8 K7 ^, y
  81.       
    3 z# }7 U! ]3 w
  82.             '????????????????????????????????(?????????????)???,???????????????????
    4 v# Q: ?& N0 U7 t7 {8 @% F
  83.             For a1 = 0 To exCOUNT- O! S2 {- N' A% d9 s0 R
  84.                 s = myTable(a1, 6)1 G' f3 ^  c7 e1 M" m+ M  z/ b$ v
  85.                 s1 = myTable(a1, 7)
    " _7 ^9 ~/ B* {5 ]9 z+ Z) w
  86.                 If Len(Trim(s)) > 0 Then+ H; f* H, F+ j! X! ?; X1 }2 v5 E
  87.                     If Len(Trim(s1)) = 0 Then, G4 D. S6 A5 |  I6 i
  88.                         myTable(a1, 7) = "L=" & s
    ! c0 I3 N+ \- S/ `. Y$ N: X
  89.                     Else2 b$ P+ {. T) F& `& \* N7 f
  90.                         myTable(a1, 4) = myTable(a1, 5) + "  L=" + s
    + C% i- A0 K6 R
  91.                     End If
    $ b8 p1 e, j! I, |, N6 s+ L6 i
  92.                 End If
    & |. A3 z6 c$ l7 \7 ^" `
  93.             Next a1
    ) p6 _  D. O$ r, Y6 W1 F( Q; C
  94.             6 o, I! z1 N8 ]* n
  95.         End If
    $ t  z# y2 D- G4 i5 j$ g/ }% q
  96.         Set swFeat = swFeat.GetNextFeature+ P- w7 b# T6 q3 q8 }
  97.     Loop% l; ^# y: q. [1 g( L8 u
  98.     ( |% S2 C# Q; U
  99.     If bTableIn Then  '??????????????????????excel???) ?1 G8 @% F5 H3 F
  100.         For a1 = 0 To exCOUNT          '????????[3] X [5]?????& T2 a# x3 b# S9 W9 y
  101.             s = myTable(a1, 3)
    + B. |! w: ?) ^) G- i$ o
  102.             s1 = myTable(a1, 5)9 }$ \- J7 w* k+ k5 M3 r& X
  103.             If Len(Trim(s)) > 0 Then1 W. A& I! k) ]! B/ q
  104.                 f1 = CSng(s)
    * {0 E: {1 j* M% U  u
  105.             Else! M9 X, S. |1 D6 n1 s2 a: ~
  106.                 f1 = 0: ^# ]; f0 c, z0 Y5 g$ |( b
  107.             End If
    # b& C0 r+ U3 u; u; G' ]
  108.             If Len(Trim(s1)) > 0 Then$ A. v4 ~, E! T/ |% p
  109.                f2 = CSng(s1)
    , n$ m& x- {/ _1 `+ p/ `
  110.             Else/ `2 U( V3 q4 N7 {% d3 W& ^
  111.                f2 = 0
    8 E# Q8 l: a4 ]( p4 I" b4 \7 f
  112.             End If
    2 b: M, L3 I3 x+ d4 y+ B4 Q
  113.             myTable(a1, 6) = Format(f1 * f2, "##0.00")9 n& t, V6 @6 i+ q
  114.         Next a1
    & `: z# f3 s8 S/ Y% [1 `8 y7 l
  115.         DeleteFile ExcelName      '??????·???е?????????????& H+ c. M0 P& v1 r% P0 z0 Q$ h
  116.         oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ExcelName & ";Extended Properties=""Excel 8.0;"""- N& d- K0 t" p9 w; Q7 Q
  117.         oRes.Open "CREATE TABLE a (IndexID TEXT,PCPNO TEXT,PCPName TEXT,Amount TEXT,MaterialName TEXT,Weight TEXT,Tweight TEXT,Remark TEXT,Source TEXT)", oConn, adOpenStatic+ D  D6 a5 c9 H2 T: \
  118.    
    3 u' V$ S- Z% S% \
  119.         For a1 = exCOUNT To 0 Step -1. n+ h5 X5 _" g7 z" H8 U
  120.             s = "IndexID,PCPNO,PCPName,Amount,MaterialName,Weight,Tweight,Remark"  _! V! I, [+ k% c& [7 p. e* n
  121.             s2 = ""
    $ X% N+ _0 p. j
  122.             c1 = """". I- z5 g2 L3 ]: i
  123.             For a2 = 0 To 7
    1 @, t( R9 F3 g  G& @
  124.                 myTable(a1, a2) = c1 & myTable(a1, a2) & c18 c: {2 s3 o! {( p8 b( T2 B" y
  125.                 s2 = s2 & myTable(a1, a2) & ","             '???????????????% w1 F$ u6 S6 s! H
  126.             Next a2- A$ L! R2 D/ ~! N- m
  127.             s2 = Left(s2, Len(s2) - 1)
    + C& @' A7 c7 B: q. `
  128.             SQLstr = "INSERT INTO a (" & s & ") VALUES (" & s2 & ")"6 O0 `5 R5 u3 I# j- F4 }
  129.             oRes.Open SQLstr, oConn, adOpenStatic/ Y- h- }7 ]  |
  130.         Next a1! n; u& K- _1 X* @9 P  F# A
  131.         oConn.Close
    . U4 s$ K2 L% w9 h, e$ m5 p
  132.     End If0 ^: d& n/ B/ ]7 D# G
  133.     * B# i* U7 V$ Z& l: e
  134.       4 J) V+ V, }$ z# K6 q) r
  135.     TableToExcel = True
    + i  S8 e* P/ C- V; i7 F3 Z" e3 o) c
  136.     Exit Function; a& D6 W' i5 j' Y" U
  137. ToExcelErr:& ]; ]7 o: }6 r4 V3 z  F
  138.     TableToExcel = False
    4 ]& T; l8 ^8 \% Z8 `

  139. # `& T2 b0 L( \- s# a6 x9 X
  140. End Function
复制代码

7 Y* d9 O0 G* v% X  t5 Z% ^2 J+ c# X! `& ~

) v/ p  V% H! i9 f+ B5 o2 c9 ~
发表于 2019-8-18 09:22:22 | 显示全部楼层 来自: 中国江苏常州
想法不错啊,楼上的代码可行吗??
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表