QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
求将工程图的明细表另存为excel格式的api函数,或将明细表指定单元格数据读出写入excel也行,拜托了。
4 A; b2 D2 s% [: E
发表于 2018-11-1 18:41:27 | 显示全部楼层 来自: 中国广东佛山
不是可以直接保存成excel吗?
 楼主| 发表于 2018-11-2 08:48:26 | 显示全部楼层 来自: 中国浙江杭州
maichengyou 发表于 2018-11-1 18:41$ I4 ?& [9 l" O. g5 ?2 S) U
不是可以直接保存成excel吗?

6 j; m7 `: D6 X; q: ~7 |是呀,不过我是在做关于这个的二次开发插件,所以想通过代码自动实现这个过程。
发表于 2018-11-2 09:26:51 | 显示全部楼层 来自: 中国陕西西安
看看这一段程序
$ p: ~  {( z9 ~) J0 ]) X: b1 P
  1. 0 X9 S; p& E  t) C* \8 a$ U
  2. '----------------------------????BOM?????--------------------------
    + [8 d" X; \" H# X) J/ F/ L, z

  3. 6 u4 T9 O4 }; X* H& E
  4. Private Function TableToExcel(ByVal part As ModelDoc2, _! r. _3 P5 u7 R6 N6 o" z9 G
  5.                               ByVal inExcelName As String) As Boolean
    9 q* s% q/ B4 G  q- ?; i1 t) ]

  6. : V! P7 G9 [; m! r
  7.     Dim exCOUNT      As Integer
    , p; N& T5 W0 X  y7 }2 J( n
  8.     Dim swBomFeat    As SldWorks.BomFeature
    - Q1 R( L/ ~4 P1 c9 i
  9.     Dim vTableArr    As Variant! n9 J$ k3 S6 e5 j
  10.     Dim vTable       As Variant
    ; }0 p# B# y, w4 E; w
  11.     Dim swTable      As Variant0 z) M- e" O5 r# j
  12.     Dim swFeat       As SldWorks.feature
    ' L; ?$ Q) Z9 u' d0 K+ a
  13.     Dim swWeldmentCutListFeat   As SldWorks.WeldmentCutListFeature
    - W5 |1 @& ]# G; z
  14.     Dim vWeldCutListAnnotations As Variant
    4 H5 h7 p4 ~  z; U; b, w  t' [5 B
  15.     Dim WeldForI     As Integer$ i6 d0 G" I! |% Y' t
  16.     Dim WeldForJ     As Integer. x7 |: M9 W: P; y: s9 r9 C+ J
  17.     Dim a1           As Integer( T& P) o! X1 {) |. S
  18.     Dim a2           As Integer5 l, o4 b) W" C9 \5 T
  19.     Dim s            As String* v  ]- e, V4 ]& A6 k
  20.     Dim s1           As String
    ( b- _( u7 A$ G3 I9 E1 f3 d
  21.     Dim s2           As String+ {5 Z0 x- u$ ^
  22.     Dim f1           As Single
    7 R6 U' C+ N. V2 B+ L, z2 L
  23.     Dim f2           As Single9 Z* M; i  M, q
  24.     Dim ExcelName    As String
    % \( N: C8 o+ F- V
  25.     Dim textName     As String$ `% p9 t2 j/ W+ @; D8 Q
  26.     Dim oRes         As New ADODB.Recordset
    6 L. b' m( Q2 A; B9 U
  27.     Dim oConn        As New ADODB.Connection
    % k, D, Y+ U" m0 P% h
  28.     Dim myTable()    As String
    5 N+ N$ V+ r7 A+ E' V- _
  29.     Dim bTableIn     As Boolean  '??????д??
    ; }& f/ l: x9 T* ~  Y* E
  30.     Dim c1           As String   '????????1 B$ Z( A: J' Q5 u
  31.     Dim SQLstr       As String   '??????SQL????  n: `, Q7 c+ G  I& m% W9 S
  32.    
    8 [- [0 |+ q0 f& ^$ @9 G
  33.     , S' I9 O7 {( N: a3 o. B5 w
  34.     On Error GoTo ToExcelErr1 C* _. c* C# u& Q& `
  35.     bTableIn = False
    $ N3 j6 Z  G1 S( |
  36.     ExcelName = inExcelName + ".xls"
    4 l& e( l, o* k; _+ `* c/ m3 J  c
  37.     Set swFeat = part.FirstFeature% ^) M$ _) X8 w
  38.     Do While Not swFeat Is Nothing. z9 k# k0 ~5 Z2 \1 Q
  39.         If swFeat.GetTypeName = "BomFeat" Then
    ; G$ g1 X5 V3 S. y' I' h3 T% [2 P. {
  40.          '--------------- ????????????----------$ ]; T3 N5 r) c4 M+ D3 S4 N
  41.             Set swBomFeat = swFeat.GetSpecificFeature2
    ) s+ o+ n! e# h* v+ F/ y7 M, k
  42.             vTableArr = swBomFeat.GetTableAnnotations
    " Y3 E9 ?0 \3 N9 D6 o
  43.             For Each vTable In vTableArr
    , z% d* u4 C+ _, V. ~  w) r
  44.                 Set swTable = vTable
    ( A! `$ F; N4 A; n) [
  45.                 exCOUNT = swTable.RowCount - 2
    6 n$ ^  N) z5 m  B9 x: G; u
  46.                 bTableIn = True/ o  \7 s1 e% n
  47.                 ReDim myTable(0 To exCOUNT, 0 To 8) As String  '????????3 p; ^" J- r" D) {! y
  48.                 For a1 = 0 To exCOUNT
    ! v! |$ e, @. v' Y+ Q  v$ G1 i
  49.                     For a2 = 0 To swTable.ColumnCount
    ! J- l: c) p. h" r; O
  50.                         If IsNull(swTable.text(a1, a2)) Then3 }; a9 C. u$ f, U0 M% ]4 ]
  51.                             s = " "" x' G9 h) `" D. q
  52.                         Else. q/ T" }/ F9 L3 E$ ^* t/ G) y
  53.                             s = swTable.text(a1, a2)  y' g+ x' e" |0 B
  54.                             'If Len(s) = 0 Then s = " "# S5 X- \% }' y  L; d; |2 L
  55.                         End If6 W8 U# {" d( W6 J% ]
  56.                         myTable(a1, a2) = s
    ( P- n* g5 n" ]
  57.                     Next a24 z5 \5 F% L. H$ u
  58.                 Next a1
    " n6 d9 I- p: B7 X6 c4 o- E0 v$ F
  59.             Next vTable
    ! Q6 t- `3 p0 z) d/ a) O1 J
  60.         End If
    & P0 r2 W6 d- c) i* [  d, Z! M; i
  61.             
    1 X* v1 N; E4 _4 {
  62.         If swFeat.GetTypeName = "WeldmentTableFeat" Then
    ! b5 d& U3 L* F
  63.              '-----------------?????и?????????-----------
    5 r* I9 ~$ w7 f2 f1 R
  64.             Set swWeldmentCutListFeat = swFeat.GetSpecificFeature2" ]; u7 H* g  w3 _
  65.             vWeldCutListAnnotations = swWeldmentCutListFeat.GetTableAnnotations: |' N( x7 Y! K3 W+ w7 b3 N
  66.             WeldForJ = vWeldCutListAnnotations(0).ColumnCount - 17 f6 v" z' A2 Z, \/ T' `
  67.             exCOUNT = vWeldCutListAnnotations(0).RowCount - 20 O+ g; v" k0 e$ r5 P$ f
  68.             bTableIn = True5 F1 B0 a: `0 U0 }/ S+ A
  69.             ReDim myTable(0 To exCOUNT, 0 To 8) As String6 [: F# ], D: X- W. D6 {' d
  70.             For a1 = 0 To exCOUNT
    7 K+ U5 p7 W2 r1 ^2 \, G2 c
  71.                 For a2 = 0 To WeldForJ
    * `4 a6 C. L3 x7 A% u
  72.                     If IsNull(vWeldCutListAnnotations(0).text(a1, a2)) Then; s% Y# ^5 n1 h+ K8 U
  73.                         s = " "8 z2 N6 O# n+ W8 n) n
  74.                     Else
    4 ?2 {4 }: |1 X% u7 J- y( R% q6 t, t
  75.                         s = vWeldCutListAnnotations(0).text(a1, a2)
      r8 o, d- M7 C, I
  76.                         'If Len(s) = 0 Then s = " "
    9 c+ p- w. `5 h, [
  77.                     End If
    3 H$ f8 {) j& ~; q2 R$ w* J
  78.                     myTable(a1, a2) = s3 l& A) D, Q7 q( L  e+ l
  79.                 Next a2
    ! e* q+ Q' e# ^/ m& l
  80.             Next a1. ?* p  B: d9 ]/ K) H, ^4 b
  81.       
    ) M# _# I1 q! f% l, H# ~& F
  82.             '????????????????????????????????(?????????????)???,???????????????????
    2 f- P% r9 Q6 A. V
  83.             For a1 = 0 To exCOUNT7 l1 k% D7 _& b
  84.                 s = myTable(a1, 6): \. h' X6 v& j# \. [; F* u
  85.                 s1 = myTable(a1, 7)
    . O/ A) i, P+ R, o' q
  86.                 If Len(Trim(s)) > 0 Then
    : V- U4 n2 Y5 @/ j5 i0 j- O8 ]8 V
  87.                     If Len(Trim(s1)) = 0 Then
    9 y+ y" j2 B* s, I( a
  88.                         myTable(a1, 7) = "L=" & s) J- L+ G5 m$ {
  89.                     Else
    , O; g4 N& M& w8 f2 M
  90.                         myTable(a1, 4) = myTable(a1, 5) + "  L=" + s
    1 y0 f, G+ a3 j4 j8 ^5 p
  91.                     End If- Q  R7 {$ W( u. |' R
  92.                 End If
    % v; I3 b0 k% _2 S; _  h6 l" |
  93.             Next a11 V* ^* N( t3 {# Y
  94.             $ t2 Y  Z5 _! z
  95.         End If
    # R, r1 i% f0 r4 n) c
  96.         Set swFeat = swFeat.GetNextFeature% e' \3 N; G) r
  97.     Loop
    ' k) {) U6 o3 @2 g) g& q) o; j/ s
  98.     ; s7 J) }5 a/ y+ E" D1 g+ X
  99.     If bTableIn Then  '??????????????????????excel???6 L) n1 z: G7 @, c3 v6 ]# }7 v; p. M6 M2 V2 N
  100.         For a1 = 0 To exCOUNT          '????????[3] X [5]?????  o0 q/ N! h3 b
  101.             s = myTable(a1, 3)
      ]3 _+ }1 H# U0 p
  102.             s1 = myTable(a1, 5)
    : P! y+ s  l1 e" ?6 f
  103.             If Len(Trim(s)) > 0 Then
    ) R& d1 Q: a8 _5 \4 z
  104.                 f1 = CSng(s): g2 {: I( ]6 R  T6 _
  105.             Else. v0 A1 u. E/ B  Z) f
  106.                 f1 = 0
    , h- o& e: Z0 X2 _- j, W6 H
  107.             End If3 p/ Y5 g! P9 \! _
  108.             If Len(Trim(s1)) > 0 Then) |6 t" b- w( @$ J7 Q
  109.                f2 = CSng(s1)$ {$ q7 t, x1 B" T7 M% M
  110.             Else
    * Z2 a) m$ M: H% ]
  111.                f2 = 07 w& s- S- P" m2 I. r
  112.             End If6 }- o; q" e9 x# [
  113.             myTable(a1, 6) = Format(f1 * f2, "##0.00"). X& W  j$ Z3 O3 S2 z  o. C4 k, p
  114.         Next a1
    9 w; ~4 @! Q" I7 p3 }! @
  115.         DeleteFile ExcelName      '??????·???е?????????????
    0 T0 \! [0 W' G2 F; N/ }3 a
  116.         oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ExcelName & ";Extended Properties=""Excel 8.0;"""! ~. o  q# x# o2 V
  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
    ' T" z/ X& p# x
  118.     ( ?( D: z3 O! j
  119.         For a1 = exCOUNT To 0 Step -1/ q+ |  b8 T1 o0 N+ U8 H2 D$ C/ V- ?! [: S
  120.             s = "IndexID,PCPNO,PCPName,Amount,MaterialName,Weight,Tweight,Remark"
    * @1 c! ~! k0 F: E# b) W
  121.             s2 = ""
    - G& f6 `- I! d& D9 A% Q( k# a
  122.             c1 = """"
    1 k6 J% K2 K" g9 Q2 ?
  123.             For a2 = 0 To 7
    ; x) t, s+ o- a# R
  124.                 myTable(a1, a2) = c1 & myTable(a1, a2) & c1% Q4 q4 C2 G# e& d
  125.                 s2 = s2 & myTable(a1, a2) & ","             '???????????????
    8 A& r1 D9 S; j) b: k
  126.             Next a2* L! n0 u- ?  j( C% q7 U
  127.             s2 = Left(s2, Len(s2) - 1)
    & u4 t2 r& e. P% o
  128.             SQLstr = "INSERT INTO a (" & s & ") VALUES (" & s2 & ")"% D3 r# s0 Q" }9 |7 ?. P7 [
  129.             oRes.Open SQLstr, oConn, adOpenStatic
    / L! [) y5 ?: G# m5 D
  130.         Next a12 J* i/ C& w: @8 f
  131.         oConn.Close% _2 ?3 X: Z9 |8 s" B8 C8 h- \0 x
  132.     End If
    3 j! }# V) T+ b' P) S# B
  133.    
    - h& Z/ t$ N* h( k
  134.       
    . x0 {" H. x, E
  135.     TableToExcel = True
    $ ^7 N& l/ ]% `% E; q) x. `: r
  136.     Exit Function) y4 ~6 k: ?( V7 t
  137. ToExcelErr:8 A- Y4 |$ h8 b: ^; _# J, @
  138.     TableToExcel = False: t% X2 w. |2 L9 a
  139. 8 J0 C7 S/ _7 ~( n
  140. End Function
复制代码
7 Z% z7 H2 ^* c+ F* N
4 M4 ?) i  \: C7 R# ~1 h

5 K- ~8 X  G8 {9 V# W
发表于 2019-8-18 09:22:22 | 显示全部楼层 来自: 中国江苏常州
想法不错啊,楼上的代码可行吗??
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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