QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
求将工程图的明细表另存为excel格式的api函数,或将明细表指定单元格数据读出写入excel也行,拜托了。% B% T, }3 ?" G$ g# U& M, l1 W
发表于 2018-11-1 18:41:27 | 显示全部楼层 来自: 中国广东佛山
不是可以直接保存成excel吗?
 楼主| 发表于 2018-11-2 08:48:26 | 显示全部楼层 来自: 中国浙江杭州
maichengyou 发表于 2018-11-1 18:41# P, y5 R& y$ j" G) ~- X/ _
不是可以直接保存成excel吗?
+ @. ^' A& `$ S2 r9 w8 U  d
是呀,不过我是在做关于这个的二次开发插件,所以想通过代码自动实现这个过程。
发表于 2018-11-2 09:26:51 | 显示全部楼层 来自: 中国陕西西安
看看这一段程序
/ D9 w* T( K6 i! N* W: D* W

  1. 1 y7 S' A9 m: a& l0 f4 f
  2. '----------------------------????BOM?????--------------------------0 |+ w3 D: j% S! U
  3. , J2 k/ g! Q3 |
  4. Private Function TableToExcel(ByVal part As ModelDoc2, _+ G* Z* ]4 B) n( M/ O2 p  i2 P- p
  5.                               ByVal inExcelName As String) As Boolean4 P8 k! Z8 h4 y! N8 l

  6. ) T- I) {, N) r. y3 e. [
  7.     Dim exCOUNT      As Integer6 F2 W' ~% G! n/ }5 h; V6 a
  8.     Dim swBomFeat    As SldWorks.BomFeature
    - o9 A% H+ S' X6 {
  9.     Dim vTableArr    As Variant
    ) K, v8 n. u1 y  Q  ?* F8 M
  10.     Dim vTable       As Variant0 I/ a) ]- P+ A' |7 ]3 `
  11.     Dim swTable      As Variant
    5 G; J3 E  k2 M
  12.     Dim swFeat       As SldWorks.feature
    - q. S* G! [5 c
  13.     Dim swWeldmentCutListFeat   As SldWorks.WeldmentCutListFeature
    4 w$ E! w" Q3 w9 U1 P9 v
  14.     Dim vWeldCutListAnnotations As Variant  y9 g; I% W) Z/ z8 B% J
  15.     Dim WeldForI     As Integer
    9 ^" F  _, k% x! }4 w3 @0 _( f3 H
  16.     Dim WeldForJ     As Integer
    ; i( J: z# X7 S
  17.     Dim a1           As Integer
    $ ?3 R" _5 m& w  ^2 n' [
  18.     Dim a2           As Integer
    ( f7 g- [! I* N/ l/ y2 l; b- f
  19.     Dim s            As String6 D. S9 s$ a, C5 i
  20.     Dim s1           As String
    ( ^' ^: g9 ~" `
  21.     Dim s2           As String  v1 }: @6 ?& M, t: K; o2 I% \
  22.     Dim f1           As Single
    ! H- T7 T' ~  Z: S+ b/ z
  23.     Dim f2           As Single8 G# g9 G7 P: W% g# r9 t: B( E3 C
  24.     Dim ExcelName    As String8 H6 E9 l' y+ U% D. _
  25.     Dim textName     As String. @; m2 f) D1 ~2 W
  26.     Dim oRes         As New ADODB.Recordset& N8 P; x6 r- z4 _, ]( C
  27.     Dim oConn        As New ADODB.Connection
    * n6 I; L  C$ O* N- {4 C
  28.     Dim myTable()    As String4 F) F) X) U* Q) C7 Y* r
  29.     Dim bTableIn     As Boolean  '??????д??
    ! @! \1 Q1 q$ V% H$ f( y
  30.     Dim c1           As String   '????????
    / M+ }, E. I; S7 E
  31.     Dim SQLstr       As String   '??????SQL????
    $ F0 y2 @/ }1 b! ^$ S0 q
  32.    
    1 _4 s$ ~. _3 ?- o8 M% A' t4 y5 @& |
  33.    
    7 ~9 H6 c$ k: M) Z0 v% ~3 e
  34.     On Error GoTo ToExcelErr
    6 w) u6 h  x- V0 U& f1 i+ b
  35.     bTableIn = False2 ^6 A$ D; C7 y, e# d. \2 a+ f
  36.     ExcelName = inExcelName + ".xls"
    3 f; a0 `+ f+ b! P! D( `
  37.     Set swFeat = part.FirstFeature8 f1 s& |; @9 A3 s) V
  38.     Do While Not swFeat Is Nothing/ Z0 j) d0 l% Y: p: Z6 R1 B8 }6 [$ A
  39.         If swFeat.GetTypeName = "BomFeat" Then. y: R5 O/ w, \
  40.          '--------------- ????????????----------
    . S1 d0 ]+ Y1 j# w" g
  41.             Set swBomFeat = swFeat.GetSpecificFeature2, i' i) i2 r6 o; E
  42.             vTableArr = swBomFeat.GetTableAnnotations9 \  `7 e% D8 o
  43.             For Each vTable In vTableArr
    2 `* E1 h, G# r3 e+ g$ N% l. O
  44.                 Set swTable = vTable
    * R+ ~3 T- q+ h
  45.                 exCOUNT = swTable.RowCount - 2
    " _5 J# ~# c3 w
  46.                 bTableIn = True
    2 g2 [% w8 L, ]4 T0 j. r
  47.                 ReDim myTable(0 To exCOUNT, 0 To 8) As String  '????????4 t' L0 K* T* B" t  H2 }
  48.                 For a1 = 0 To exCOUNT9 p# S7 L/ }0 h4 y& W, w3 _
  49.                     For a2 = 0 To swTable.ColumnCount
    $ {' ~; R" w/ O! `4 y2 D
  50.                         If IsNull(swTable.text(a1, a2)) Then
    " @8 t, n- }1 l# u4 f
  51.                             s = " "! [+ f  _/ p: \) k( }- d8 ]$ [
  52.                         Else
    5 v, U  S6 H! Z
  53.                             s = swTable.text(a1, a2)$ o) ^2 w4 D- a  ]" V5 S4 M) b0 u
  54.                             'If Len(s) = 0 Then s = " "" B4 j1 Y3 \& q" k  o! K5 Q
  55.                         End If# c  u0 c7 K2 {4 u- p# k
  56.                         myTable(a1, a2) = s
    0 q& j3 ^/ L2 z. E3 P5 t
  57.                     Next a26 R. }! X' |3 p6 C
  58.                 Next a1+ B. _" I3 f5 ^) i- ]; t7 B
  59.             Next vTable
    ! N: k7 b$ P' C- P& y& B2 j
  60.         End If3 W5 u: R8 F* V- j  l- u
  61.             
      p* f2 E* ?+ c7 G. O6 H; [
  62.         If swFeat.GetTypeName = "WeldmentTableFeat" Then
    ! {/ r; M- `7 _
  63.              '-----------------?????и?????????-----------
    / `' {' z9 \6 w6 _
  64.             Set swWeldmentCutListFeat = swFeat.GetSpecificFeature2# i5 s1 [4 y* [2 n0 ~
  65.             vWeldCutListAnnotations = swWeldmentCutListFeat.GetTableAnnotations* r* y7 Q& _6 n( ^1 X
  66.             WeldForJ = vWeldCutListAnnotations(0).ColumnCount - 1
    9 @( {' A3 H& j' C) [
  67.             exCOUNT = vWeldCutListAnnotations(0).RowCount - 2+ Q7 `% d8 }7 F, h- s
  68.             bTableIn = True
    / {  ~5 S# F; o8 C
  69.             ReDim myTable(0 To exCOUNT, 0 To 8) As String
    # m6 Z$ h1 S7 R$ C! g4 a* I
  70.             For a1 = 0 To exCOUNT+ w& t( ^: f9 ?
  71.                 For a2 = 0 To WeldForJ
    7 M+ h) J" v3 ]& q* T
  72.                     If IsNull(vWeldCutListAnnotations(0).text(a1, a2)) Then+ n. v, u; f5 H# b! m+ s
  73.                         s = " "2 ^; p  Z/ k# L* p  u
  74.                     Else0 I) V- Q* G( L  B  k* q0 b& N6 j) g
  75.                         s = vWeldCutListAnnotations(0).text(a1, a2)
    9 O" Q0 p0 x, s7 {
  76.                         'If Len(s) = 0 Then s = " "
    - y2 \8 E, W! |' q0 P- G. Q0 u. q0 x
  77.                     End If
    ( ?) Y/ A& v( E
  78.                     myTable(a1, a2) = s
    / z) N! b6 E9 |% H* T$ }4 J
  79.                 Next a22 q* U; [  |, P+ T
  80.             Next a1
    9 H% I  b! i, J3 m2 K; G5 S/ x
  81.       
    / m4 J- n2 c+ T- g: ~' t' \# o3 ]
  82.             '????????????????????????????????(?????????????)???,???????????????????
      l' C0 o: d6 P' J4 \0 K. F" u- x
  83.             For a1 = 0 To exCOUNT
    , l3 i  I, K$ g2 T; v
  84.                 s = myTable(a1, 6)3 ^7 d# ^' d  V3 Z% u
  85.                 s1 = myTable(a1, 7)* M/ R7 ~9 Q. n0 Q
  86.                 If Len(Trim(s)) > 0 Then7 c- t4 r9 f& F8 r. Q% ^& p
  87.                     If Len(Trim(s1)) = 0 Then
      _. q! z$ T. U) K
  88.                         myTable(a1, 7) = "L=" & s8 k0 V, ?' K9 p' F
  89.                     Else
    8 D- G/ X  d; f  |
  90.                         myTable(a1, 4) = myTable(a1, 5) + "  L=" + s
    # E- K! M% c5 t$ Z  D* C3 [
  91.                     End If
    8 U* O5 C8 r- l: u# S$ o
  92.                 End If
    0 m4 E9 Q7 i/ h
  93.             Next a1
    ' l5 Y4 O6 B2 L
  94.             & B( h& ]5 h8 C0 K. x
  95.         End If
    % r1 ]# _/ D$ T2 c
  96.         Set swFeat = swFeat.GetNextFeature* V* ?. e1 p2 w. M* W* n7 L$ Y
  97.     Loop
    , Z6 v% N, X7 o/ ~
  98.     % ?$ D. I" q; v8 R& V- Q0 H
  99.     If bTableIn Then  '??????????????????????excel???
    2 s2 G- h# B) w
  100.         For a1 = 0 To exCOUNT          '????????[3] X [5]?????: t# X1 {1 Z7 C: Q
  101.             s = myTable(a1, 3)
    9 ], a! e5 E8 Z" ]
  102.             s1 = myTable(a1, 5)
    ! f$ u8 `' X; G( f; D+ }4 v9 _
  103.             If Len(Trim(s)) > 0 Then: Q# j1 A+ y- C' f
  104.                 f1 = CSng(s)' D! g2 C, H) N9 Y
  105.             Else
    7 q' _' ?# R% j; ?0 {% U2 D
  106.                 f1 = 09 s2 F( A1 m2 L4 p4 D
  107.             End If
    0 r3 @5 l5 T( f
  108.             If Len(Trim(s1)) > 0 Then
    4 Y. \9 l' e. H( t6 ?8 v; K. N
  109.                f2 = CSng(s1)
    - R1 z4 u; P4 {3 T% y
  110.             Else* K: d4 v  O2 Y
  111.                f2 = 0
    & ^0 U% Y& ^$ s1 ^
  112.             End If
    % X' V4 R# p! B" K6 N
  113.             myTable(a1, 6) = Format(f1 * f2, "##0.00")6 b! b( O1 E# ~1 k# a9 @5 k, _; G# d$ R7 E
  114.         Next a1
    1 `3 X0 z. x( L! t5 ?
  115.         DeleteFile ExcelName      '??????·???е?????????????4 J2 H" w3 p8 U& K1 P" p
  116.         oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ExcelName & ";Extended Properties=""Excel 8.0;"""
    4 e, S3 D/ T' w& |
  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; y  B  s) p4 O
  118.    
    : `( H' u& |2 }4 e5 U3 B; h
  119.         For a1 = exCOUNT To 0 Step -1# n( t3 O! G6 @" D- H5 z! k
  120.             s = "IndexID,PCPNO,PCPName,Amount,MaterialName,Weight,Tweight,Remark"& n& R# G. q# m- B% J
  121.             s2 = ""% k, P# b7 V  D  D/ G6 q$ a/ e
  122.             c1 = """"
    & U8 V( X  u4 D
  123.             For a2 = 0 To 7
    $ I- \% O( k( L) p  s/ G: Q
  124.                 myTable(a1, a2) = c1 & myTable(a1, a2) & c11 I! a5 l1 c; f7 |8 N% r
  125.                 s2 = s2 & myTable(a1, a2) & ","             '???????????????
    ' X4 @+ y0 H3 D4 `; Y& _7 ~
  126.             Next a23 D  J& x# P+ }' J/ a
  127.             s2 = Left(s2, Len(s2) - 1)+ v5 i* P. h5 o
  128.             SQLstr = "INSERT INTO a (" & s & ") VALUES (" & s2 & ")"5 x7 U2 A% K; I7 P6 u
  129.             oRes.Open SQLstr, oConn, adOpenStatic. b* E  `3 p6 U" U2 A/ L8 H! [; Q' _9 D
  130.         Next a13 n' k7 V$ |7 G% @+ U, t- {
  131.         oConn.Close
    6 g3 ]( P2 h/ m4 c$ b4 U
  132.     End If
    # v4 N7 z( N3 t0 K2 q
  133.     9 L8 ?# x: k" d! c3 ]" U4 @' N) P
  134.       
    6 K3 v, ~4 V+ W) s# u
  135.     TableToExcel = True0 C: k5 y+ P" O* ^: F1 A" ~& c
  136.     Exit Function! Y6 Y( @8 [" j) @. @
  137. ToExcelErr:
    " L! p* m* U* f% |* a& y
  138.     TableToExcel = False
    6 P# f* Y! a. m  }

  139. * |+ r. B7 u( R6 d) C! P
  140. End Function
复制代码
0 @% T5 K+ x& N" _. |* V# i

$ v; A" A( i2 r0 X$ U# L$ v) y
& j' t4 a8 r2 F& C
发表于 2019-8-18 09:22:22 | 显示全部楼层 来自: 中国江苏常州
想法不错啊,楼上的代码可行吗??
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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