QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 版主微信号:caivin811031;还未入三维微信群的小伙伴,速度加
2022-07-04
全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
查看: 2161|回复: 4
收起左侧

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

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

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

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

x
求将工程图的明细表另存为excel格式的api函数,或将明细表指定单元格数据读出写入excel也行,拜托了。5 O& P' X; P% Y/ O
发表于 2018-11-1 18:41:27 | 显示全部楼层
不是可以直接保存成excel吗?
 楼主| 发表于 2018-11-2 08:48:26 | 显示全部楼层
maichengyou 发表于 2018-11-1 18:41
2 Q! r1 C# |& w* g( T% P不是可以直接保存成excel吗?

+ ^# a* v; E* T) n" o是呀,不过我是在做关于这个的二次开发插件,所以想通过代码自动实现这个过程。
发表于 2018-11-2 09:26:51 | 显示全部楼层
看看这一段程序" Z- w: u' L4 O. K" O
  1. : Q1 o, M) }& @: i( C
  2. '----------------------------????BOM?????--------------------------( E% O1 L( a( E6 r
  3. ; t$ S+ b' [1 H" J
  4. Private Function TableToExcel(ByVal part As ModelDoc2, _) y  B4 ?" |6 S+ |1 g
  5.                               ByVal inExcelName As String) As Boolean. }% F" @' [  G+ w

  6. 2 u+ P- E0 ]- g% S9 P6 s
  7.     Dim exCOUNT      As Integer
    " ?! V$ j( y. @8 v! ~* a2 W) T
  8.     Dim swBomFeat    As SldWorks.BomFeature
    * m! Y$ r  e( e/ p
  9.     Dim vTableArr    As Variant
    / f% G0 a# {% }' f( a; I( I# k) p
  10.     Dim vTable       As Variant
    ' I- M+ `/ p* c# d! q
  11.     Dim swTable      As Variant8 D/ }: p7 o$ F' F
  12.     Dim swFeat       As SldWorks.feature* H0 W7 t3 H9 \! f: f  O0 B
  13.     Dim swWeldmentCutListFeat   As SldWorks.WeldmentCutListFeature
    5 q7 x& ?* U; B
  14.     Dim vWeldCutListAnnotations As Variant7 K$ R7 [; _. @* G) ~% u
  15.     Dim WeldForI     As Integer
    2 x, A% g' V" a. _+ R. N& i9 F
  16.     Dim WeldForJ     As Integer+ o; P( \3 g' b/ e+ B6 s
  17.     Dim a1           As Integer6 @0 Z- W5 w5 V  J( v# ?3 |; t5 R6 e
  18.     Dim a2           As Integer& E, p. ^* m0 g7 Z9 }+ U% l
  19.     Dim s            As String
    % K& [) X; Y- ?! y8 Q! ]6 Q
  20.     Dim s1           As String- o# u  ]; v. W6 L
  21.     Dim s2           As String
    2 ^7 \8 i/ O& J7 ~/ ?2 _" H
  22.     Dim f1           As Single: k9 x/ [! i2 Q4 I* c4 X! \, w
  23.     Dim f2           As Single7 X" V( r7 A4 {) A/ h
  24.     Dim ExcelName    As String! s% N% f1 {: o* F1 X
  25.     Dim textName     As String2 r/ N# n1 Q9 P! r9 w
  26.     Dim oRes         As New ADODB.Recordset/ Y! {- d8 ^' B  l& o3 }' c  [9 e
  27.     Dim oConn        As New ADODB.Connection
    3 a( Z4 R- d; B: ^
  28.     Dim myTable()    As String
    , y, R; q0 `* g, i
  29.     Dim bTableIn     As Boolean  '??????д??
    1 G5 \# v5 ?7 y* l3 M. u
  30.     Dim c1           As String   '????????
    % u! i" q) O! V) }! c3 _
  31.     Dim SQLstr       As String   '??????SQL????% C! Y2 P" x$ @
  32.     + c, A- O" E( ~* t! Y* g
  33.     ' p1 d0 x- R& y' v9 d3 M
  34.     On Error GoTo ToExcelErr
    * c) B2 r/ ^- X, q) W
  35.     bTableIn = False
    # k6 Y8 V. [7 P* r0 g0 q+ \; W1 O8 b
  36.     ExcelName = inExcelName + ".xls"+ w3 G& Y6 c9 q6 T
  37.     Set swFeat = part.FirstFeature
    / |4 R: m$ ?+ I2 C: ^6 i2 l
  38.     Do While Not swFeat Is Nothing
    1 o9 G! \- @2 {0 O! f3 F( i( X
  39.         If swFeat.GetTypeName = "BomFeat" Then3 B( `) M  o# ^
  40.          '--------------- ????????????----------: t7 J! `% j4 q. h% Y
  41.             Set swBomFeat = swFeat.GetSpecificFeature2
    ' t! w, H9 x# A* H% ?
  42.             vTableArr = swBomFeat.GetTableAnnotations% V- ]3 j4 S; U8 X
  43.             For Each vTable In vTableArr
    * ]8 n8 N! |. q( O
  44.                 Set swTable = vTable0 w' u- S/ f8 O0 o- X
  45.                 exCOUNT = swTable.RowCount - 2
    * ]) y+ K4 k) d; S# o0 w
  46.                 bTableIn = True( }: w2 t# H/ O8 W
  47.                 ReDim myTable(0 To exCOUNT, 0 To 8) As String  '????????- v& y5 ~) p' ]0 F) e
  48.                 For a1 = 0 To exCOUNT
    # g1 x% m2 I" ^1 Q" K! V& A! n
  49.                     For a2 = 0 To swTable.ColumnCount3 Z0 r% k4 s! p; a# {- o+ R3 T! k
  50.                         If IsNull(swTable.text(a1, a2)) Then+ ?, m8 C2 J' I6 ?% r! W5 E% M( o5 p
  51.                             s = " "
    4 q2 L/ A- j+ q, k4 U# S4 S# s
  52.                         Else  `* v1 o, ]' Y: y! X
  53.                             s = swTable.text(a1, a2)
    ' _  P2 r0 h8 r  v! F7 R, n
  54.                             'If Len(s) = 0 Then s = " "2 t* z, {* P1 K# Q5 q
  55.                         End If
    : c2 X- ~: J" r+ {  B# x% B% K
  56.                         myTable(a1, a2) = s
    # |& h6 [) C9 H( @8 i
  57.                     Next a2
    3 m% d2 ~/ {1 N1 ?% c9 x
  58.                 Next a1
    : u: E8 g$ `' v
  59.             Next vTable9 n- A/ W- U" {  m
  60.         End If
    0 F: ^0 H- W/ a+ b& G' }& X( G3 V
  61.              ' }* b8 p" t% V5 r% N
  62.         If swFeat.GetTypeName = "WeldmentTableFeat" Then9 ~3 m& c) Q: Y, b" L
  63.              '-----------------?????и?????????-----------
    5 F( W- c9 t% U" v# P
  64.             Set swWeldmentCutListFeat = swFeat.GetSpecificFeature2
    : M8 _/ ]# k" d
  65.             vWeldCutListAnnotations = swWeldmentCutListFeat.GetTableAnnotations
    # j) ]; C* }3 j: Y9 j
  66.             WeldForJ = vWeldCutListAnnotations(0).ColumnCount - 1& ^% y) ~7 }6 I3 ~! \6 a/ P* R
  67.             exCOUNT = vWeldCutListAnnotations(0).RowCount - 2
    5 j& S( E! Y2 @) _' g" h
  68.             bTableIn = True
    ( s+ ^# l3 \0 i6 B) q2 q1 d9 E5 Q
  69.             ReDim myTable(0 To exCOUNT, 0 To 8) As String/ @5 t8 ]3 A, [* n: f5 O
  70.             For a1 = 0 To exCOUNT
    ! _; y. |" |! ?0 B+ g" U& j
  71.                 For a2 = 0 To WeldForJ, {* R' `2 W( D$ x2 f: m0 F" G
  72.                     If IsNull(vWeldCutListAnnotations(0).text(a1, a2)) Then
    0 z3 E0 o, B' ^  S! Q
  73.                         s = " ") \5 I! o) x0 C& {- T
  74.                     Else
    ( v# x2 t0 m$ C
  75.                         s = vWeldCutListAnnotations(0).text(a1, a2)" T: V' z* v. _* k$ v4 a
  76.                         'If Len(s) = 0 Then s = " "1 @, A; D3 C# F0 K
  77.                     End If: O& r& B8 [# i! r6 n& u, F3 |
  78.                     myTable(a1, a2) = s4 a) w: M6 @2 t8 W2 o
  79.                 Next a20 B- s. M3 g6 r2 j( n
  80.             Next a1
    ; {+ v6 p9 X2 j; \5 w
  81.       
    9 c  ~* Q4 y, z6 l9 y, u" N
  82.             '????????????????????????????????(?????????????)???,???????????????????0 D: d4 N! t" m. V
  83.             For a1 = 0 To exCOUNT
    % Y3 Z( S4 T, u8 E% l9 M6 o; {
  84.                 s = myTable(a1, 6)
    9 E0 q5 x, D4 e, Q8 l/ U! m& J
  85.                 s1 = myTable(a1, 7)$ c- N. F7 R0 _0 a
  86.                 If Len(Trim(s)) > 0 Then
    * I8 e" ?( M3 K2 j6 a/ S& M9 t
  87.                     If Len(Trim(s1)) = 0 Then
    ; N& r2 j; W( u
  88.                         myTable(a1, 7) = "L=" & s$ Z2 j/ H' z7 u: `/ p8 U, F. q
  89.                     Else% r5 \, e, {/ M) g2 m+ T
  90.                         myTable(a1, 4) = myTable(a1, 5) + "  L=" + s* J6 A0 ?" E& P
  91.                     End If$ N7 u  [1 ^/ c: @
  92.                 End If- Z+ g: V0 |7 y/ u
  93.             Next a1
    / v, r; T9 K& Y! z
  94.             
    ( C4 r, w. r/ D" O  H
  95.         End If4 _- a8 i" `" ]
  96.         Set swFeat = swFeat.GetNextFeature/ K/ d* o& {: U* [; }
  97.     Loop
    & J! q9 m( D6 i" a! }+ z# a. I
  98.    
    3 s" E: `( t# N
  99.     If bTableIn Then  '??????????????????????excel???
      g( H: f$ U/ W! O0 F
  100.         For a1 = 0 To exCOUNT          '????????[3] X [5]?????
    2 n! K' B( Z* b/ }
  101.             s = myTable(a1, 3)( H- n* ]( e) t  E
  102.             s1 = myTable(a1, 5)
      [. v) O& q" _
  103.             If Len(Trim(s)) > 0 Then
    ; W2 L8 X: `; q+ m2 L8 `
  104.                 f1 = CSng(s)& ^1 v( Z$ p: E$ x
  105.             Else
    % X! M; T6 }) F
  106.                 f1 = 0# G8 H7 K; F3 Y" X" \
  107.             End If
    - u, o$ a8 L6 f* u" d# h
  108.             If Len(Trim(s1)) > 0 Then  N3 U: H! [5 Q  z! ?: E
  109.                f2 = CSng(s1)
    8 t9 `. @% \3 I+ y
  110.             Else
    6 x& U1 h8 J+ h" t
  111.                f2 = 0/ v- F$ a, d, O# M4 H, z6 _
  112.             End If$ }+ z8 V8 d5 t+ K: M! b
  113.             myTable(a1, 6) = Format(f1 * f2, "##0.00")
    2 {$ u% g5 \3 d. g
  114.         Next a1
    + Q2 v" M" c* W$ e7 e( u7 s: m2 X
  115.         DeleteFile ExcelName      '??????·???е?????????????; ~/ o1 s" q$ }, _% T
  116.         oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ExcelName & ";Extended Properties=""Excel 8.0;"""
    ! v; B: B% @5 t1 B
  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
    ) E- }; `0 w  m. O1 {$ S1 m9 V
  118.     * f/ r; M6 N1 F' Q1 T4 D; s
  119.         For a1 = exCOUNT To 0 Step -11 [; i& U* [  g3 i+ _: t
  120.             s = "IndexID,PCPNO,PCPName,Amount,MaterialName,Weight,Tweight,Remark"
    0 ?8 o- s5 t- b' ~" L
  121.             s2 = ""
    : M/ X1 y, W2 _' u. c  Q7 |' H9 g; c' E6 Q
  122.             c1 = """"
    * G+ A0 ~7 m( x+ ?6 K
  123.             For a2 = 0 To 7
    $ ~! ?. |- q( {" ^
  124.                 myTable(a1, a2) = c1 & myTable(a1, a2) & c1
    % F4 S$ M5 W9 {
  125.                 s2 = s2 & myTable(a1, a2) & ","             '???????????????
    + b; N& W! z; o% K6 S; a
  126.             Next a2
    # f! t; q/ Q6 x8 k  l
  127.             s2 = Left(s2, Len(s2) - 1), z1 }* C! {1 F+ M9 t4 J, ?" f; `
  128.             SQLstr = "INSERT INTO a (" & s & ") VALUES (" & s2 & ")"( D* [( _0 [7 ~$ L0 }  y: j
  129.             oRes.Open SQLstr, oConn, adOpenStatic
    2 f( V* s! A+ X# W
  130.         Next a1& G' F2 {3 x+ T6 q$ `% @
  131.         oConn.Close/ B1 v. m6 J0 o
  132.     End If& h+ F9 D3 n6 l9 S, G
  133.    
    : A, u% h% p4 G  Y$ v2 \( \2 H
  134.       $ o; a1 X7 v5 l. `* s
  135.     TableToExcel = True" H# a5 f, h4 j, |
  136.     Exit Function
    - Z" E$ Z$ R( {  P! k
  137. ToExcelErr:0 u6 P. |! G/ X2 n  E
  138.     TableToExcel = False
    2 y; A/ b- \: e' H# x

  139. + X" y* l; E. S1 E- O% ?$ ?7 e
  140. End Function
复制代码

1 O, _9 H+ w" Y) J+ B* }, W+ ^0 _7 W2 {, l4 k  X" A

% {$ _# M' z( l9 A' U5 i3 H& N, M
发表于 2019-8-18 09:22:22 | 显示全部楼层
想法不错啊,楼上的代码可行吗??
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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