QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
求将工程图的明细表另存为excel格式的api函数,或将明细表指定单元格数据读出写入excel也行,拜托了。9 M' [+ P9 w" a
发表于 2018-11-1 18:41:27 | 显示全部楼层
不是可以直接保存成excel吗?
 楼主| 发表于 2018-11-2 08:48:26 | 显示全部楼层
maichengyou 发表于 2018-11-1 18:41% @* r- y- D4 K
不是可以直接保存成excel吗?
$ U& O  a" `, F% s; J- p
是呀,不过我是在做关于这个的二次开发插件,所以想通过代码自动实现这个过程。
发表于 2018-11-2 09:26:51 | 显示全部楼层
看看这一段程序7 J( S7 e5 P* g2 z! h& `
  1. / [" P6 x: ~) Q
  2. '----------------------------????BOM?????--------------------------
    8 t* L( }! y, X7 F

  3. * Q: P! X7 C/ {! g7 N
  4. Private Function TableToExcel(ByVal part As ModelDoc2, _
    ; b( W4 o; x" m0 }4 ^) L
  5.                               ByVal inExcelName As String) As Boolean
    : A  m. x( _/ e- U

  6. # I- q. u. M/ ]5 a* J
  7.     Dim exCOUNT      As Integer) E% q! x2 v. P9 n
  8.     Dim swBomFeat    As SldWorks.BomFeature4 R: ?9 P6 n3 v3 b0 m  F+ P+ }$ B
  9.     Dim vTableArr    As Variant) q3 x: P+ ?  @7 z" v, F
  10.     Dim vTable       As Variant: E8 {0 F. y+ G. @" D+ l8 d
  11.     Dim swTable      As Variant, {$ M! j! Y" g. o4 p1 Z
  12.     Dim swFeat       As SldWorks.feature+ a3 r6 b5 m1 c4 P, P5 c
  13.     Dim swWeldmentCutListFeat   As SldWorks.WeldmentCutListFeature
    , e9 L$ T4 ~# B$ k
  14.     Dim vWeldCutListAnnotations As Variant" }3 o: T8 i4 U# i, o
  15.     Dim WeldForI     As Integer
    9 l6 X7 Z; ~/ P: j4 _% }/ l" U& K
  16.     Dim WeldForJ     As Integer
    # n1 d7 c- x6 k( |
  17.     Dim a1           As Integer
    7 D' f) A  G- D# ]* \) u3 _3 [
  18.     Dim a2           As Integer
    4 y, a8 z7 t5 ~7 F$ _! z7 R
  19.     Dim s            As String
    # b, S5 K! X' I6 G% h, V
  20.     Dim s1           As String
    6 c, ~$ v1 V) e9 x
  21.     Dim s2           As String
    - l* Y; |  b8 E8 m5 p: T4 v3 g
  22.     Dim f1           As Single
    0 f, w* Y/ e. C" k
  23.     Dim f2           As Single: z+ w& g$ m) C, J
  24.     Dim ExcelName    As String
    8 F, U$ j* }: K! A4 K/ }/ o. N$ G
  25.     Dim textName     As String  q4 o# _; i& ~& h$ m% ?1 M1 ?
  26.     Dim oRes         As New ADODB.Recordset
    / x: O! Z* \7 s8 q6 X7 M5 @) n
  27.     Dim oConn        As New ADODB.Connection) u+ x3 s& u- A* o
  28.     Dim myTable()    As String
    ) N- b8 f& W; |: F/ P% m( \6 l6 b
  29.     Dim bTableIn     As Boolean  '??????д??; N( Z/ d/ N! l" K4 \
  30.     Dim c1           As String   '????????& D4 Z: K& y, m- L2 i
  31.     Dim SQLstr       As String   '??????SQL????
    ( Q% J- a& _; P6 o3 i$ y% Q" e
  32.    
    $ j5 b. U$ p* b& h* U" z
  33.    
    - a' {$ f; C& N7 y$ S6 y
  34.     On Error GoTo ToExcelErr
    6 P8 e0 Z- G  P, Q7 }, n
  35.     bTableIn = False2 I6 ^! R5 z% l% N. s7 J% v- z
  36.     ExcelName = inExcelName + ".xls") T) i/ f, \; P+ U+ {
  37.     Set swFeat = part.FirstFeature
    2 U: N  w8 S' N4 @+ L
  38.     Do While Not swFeat Is Nothing) ^8 ^$ q3 l( t+ F* b& P
  39.         If swFeat.GetTypeName = "BomFeat" Then3 {9 J9 c2 y1 o, l" p5 e4 f: h
  40.          '--------------- ????????????----------% d7 X3 s. i2 z* @- x# o5 m% H, D  `
  41.             Set swBomFeat = swFeat.GetSpecificFeature2; f1 A+ E( [; b4 i, ^6 |
  42.             vTableArr = swBomFeat.GetTableAnnotations! e3 j# i2 R' |$ E% }) v
  43.             For Each vTable In vTableArr' J( X( U2 F* |- z8 O! P) G
  44.                 Set swTable = vTable0 [4 I$ N2 W& M
  45.                 exCOUNT = swTable.RowCount - 2
    ! L: B! [& R0 y- Z
  46.                 bTableIn = True5 ?& I1 b% A! r* m6 U6 N
  47.                 ReDim myTable(0 To exCOUNT, 0 To 8) As String  '????????/ `; ]8 o, c- K
  48.                 For a1 = 0 To exCOUNT
    0 s2 @7 N9 I! F7 d- |/ o" x6 T
  49.                     For a2 = 0 To swTable.ColumnCount
    . ^* u4 B6 D! F. l( E0 M2 {5 X
  50.                         If IsNull(swTable.text(a1, a2)) Then* c2 ]6 S" v  x  r+ u
  51.                             s = " "
    " S, F6 w; [" D. o  a
  52.                         Else$ z' I0 @& H6 a! i+ Z
  53.                             s = swTable.text(a1, a2)+ W) v  u8 m: f/ |$ S3 M
  54.                             'If Len(s) = 0 Then s = " "
    9 v( Z( B) D6 I/ K6 N
  55.                         End If
      G5 R* x3 B( ~8 P/ e  ]
  56.                         myTable(a1, a2) = s8 h2 e8 n' P/ ]7 U1 d
  57.                     Next a2
    / B* n$ w' Z# J/ N
  58.                 Next a18 I2 m# J) q4 Z" |3 T) ~
  59.             Next vTable) A% D/ I8 w1 z$ B+ w
  60.         End If
    ( [' t& T9 `  B. I# O, t: o
  61.              5 l3 M. z4 K' K
  62.         If swFeat.GetTypeName = "WeldmentTableFeat" Then
    8 U1 Z/ S9 [% E8 o* }1 U/ t
  63.              '-----------------?????и?????????-----------. B. \( G( C" P# j
  64.             Set swWeldmentCutListFeat = swFeat.GetSpecificFeature2  C7 D( r, U8 T' Y3 I; z0 A6 L! X
  65.             vWeldCutListAnnotations = swWeldmentCutListFeat.GetTableAnnotations
    . {0 t$ V5 X3 n/ I6 t0 t
  66.             WeldForJ = vWeldCutListAnnotations(0).ColumnCount - 1! `- y& ^7 k# k) }
  67.             exCOUNT = vWeldCutListAnnotations(0).RowCount - 2
    0 ~) S* M, f2 O
  68.             bTableIn = True
    " u0 ?: q1 Z5 o$ E8 J
  69.             ReDim myTable(0 To exCOUNT, 0 To 8) As String
    ( j; t  B; h$ l; K! R/ X1 O
  70.             For a1 = 0 To exCOUNT
    9 a- }  j8 u4 R+ e+ u0 k" t
  71.                 For a2 = 0 To WeldForJ
    % w. V# K5 H  \6 v% P+ J9 k' L
  72.                     If IsNull(vWeldCutListAnnotations(0).text(a1, a2)) Then
    ( G& B/ @4 y; v$ [' U- b
  73.                         s = " "7 d6 N6 U5 E# T/ o0 n  B
  74.                     Else" W5 ~5 H3 B0 G% c6 a, m
  75.                         s = vWeldCutListAnnotations(0).text(a1, a2)
      X; L0 v" s2 @" N( [0 k
  76.                         'If Len(s) = 0 Then s = " "
    % G) ]; \. a, o* o  b
  77.                     End If
    , a. E9 }7 p" F2 A7 P0 R- |
  78.                     myTable(a1, a2) = s
    1 P& o' I) J  v
  79.                 Next a22 G% `) V+ ?2 V5 i3 B) L
  80.             Next a1
    3 a9 I2 Y8 }2 i- N: Z1 `( ?
  81.       
    & `2 K* c9 X5 P& v
  82.             '????????????????????????????????(?????????????)???,???????????????????
    ! A. x& T2 Z' P
  83.             For a1 = 0 To exCOUNT& z- E  ?9 B& j, L
  84.                 s = myTable(a1, 6)
    0 N: @5 ~/ l. u6 u0 Y2 e
  85.                 s1 = myTable(a1, 7)
    + r2 F$ c$ N& M
  86.                 If Len(Trim(s)) > 0 Then
    1 s. j1 t* i* s7 @$ |
  87.                     If Len(Trim(s1)) = 0 Then
    - y: y* }( A- l  r6 n  O( D
  88.                         myTable(a1, 7) = "L=" & s, G& y1 H+ L* `# L4 M. T) \
  89.                     Else: b* o5 B) w; v& p2 k1 n
  90.                         myTable(a1, 4) = myTable(a1, 5) + "  L=" + s* S  @( h+ ?7 S1 q+ D8 c
  91.                     End If" j. r3 N3 t6 U" m1 M* f* Z, Z
  92.                 End If- v0 w7 J0 v/ }0 U  P+ H
  93.             Next a18 s; i7 Z  ^$ H2 Q
  94.             ' _7 m  D% H( D- P# Z1 {7 S
  95.         End If
    % {2 p7 u  g0 v/ `( E/ [9 c
  96.         Set swFeat = swFeat.GetNextFeature( P: }3 `, Z9 C! e; a* }
  97.     Loop
    # d; Y7 J- ]- v+ Z. |( v
  98.     9 B# P& T% N3 Q# T
  99.     If bTableIn Then  '??????????????????????excel???9 s- t: M! f6 ~( {* j; {
  100.         For a1 = 0 To exCOUNT          '????????[3] X [5]?????5 t' Z+ d' A/ t9 M+ H4 C3 [
  101.             s = myTable(a1, 3)4 _- k% H! _4 x
  102.             s1 = myTable(a1, 5)
    & T) i3 Q* C- `' E) W
  103.             If Len(Trim(s)) > 0 Then
    ; `' h# U4 `# g, ?. r; b' N6 |; `
  104.                 f1 = CSng(s)
    6 _2 {1 g7 r% B) q4 L  ^9 t
  105.             Else
    + P( |  g$ N1 n. N5 K* h( D
  106.                 f1 = 0
    / T8 L  O1 r' C6 @* O; I& h
  107.             End If0 K# w- n: q; U
  108.             If Len(Trim(s1)) > 0 Then: Z2 b% K$ o" L% H5 |: J) ]
  109.                f2 = CSng(s1)
    . G7 E. C1 J3 O! Y( A+ j2 [
  110.             Else: Q* I1 N$ v; }1 o% I
  111.                f2 = 0! W' e# f) p$ G* T# u
  112.             End If
    ( W* Z' T. ]0 s- _0 D# @0 [* T
  113.             myTable(a1, 6) = Format(f1 * f2, "##0.00")3 [/ z& X5 ~4 X, t! ~9 g2 v( f8 _
  114.         Next a1
    ! ?" F- v& O; ?. W  f! g
  115.         DeleteFile ExcelName      '??????·???е?????????????
    2 q* b+ P8 @) p6 z& H( q' s/ b
  116.         oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ExcelName & ";Extended Properties=""Excel 8.0;"""
    1 b- G" _7 U2 Z. |; o, {
  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# s% w+ T5 O' \, V
  118.     : ~2 l0 t3 e% }* g4 \" z& u  z
  119.         For a1 = exCOUNT To 0 Step -1
    , o- t1 i5 F' S
  120.             s = "IndexID,PCPNO,PCPName,Amount,MaterialName,Weight,Tweight,Remark"
    ; O/ ~4 U& _9 u3 q2 I
  121.             s2 = ""
    % f$ E4 w& `, z4 n) ^2 ~, i( u7 }- Q
  122.             c1 = """"
    - j; `( l" {. D/ v
  123.             For a2 = 0 To 72 @& \/ |5 [7 W; [
  124.                 myTable(a1, a2) = c1 & myTable(a1, a2) & c1
    ) ~& \: m0 r6 v
  125.                 s2 = s2 & myTable(a1, a2) & ","             '???????????????7 y3 G1 {$ T+ q4 c4 Z8 \
  126.             Next a22 r" Z! L/ u' |7 u. d4 u% G
  127.             s2 = Left(s2, Len(s2) - 1)
    3 \/ i! u- q# X: G* P$ @7 [
  128.             SQLstr = "INSERT INTO a (" & s & ") VALUES (" & s2 & ")"
    1 \; ?# ]: n/ `: B! n
  129.             oRes.Open SQLstr, oConn, adOpenStatic
    1 W, z$ O/ Y1 p0 b! O- F' C4 B
  130.         Next a1
    7 O5 \" a9 w3 D- R* g& w: S
  131.         oConn.Close
      \  d9 K& r) |6 p9 Q, D
  132.     End If% [2 y' {$ E. o+ V  c! u/ \7 N
  133.    
    ) S/ ]) t2 c' @# b. \
  134.       
    7 C+ ?3 F" f' `9 d5 W
  135.     TableToExcel = True
    0 N  S3 j$ J( X! p/ u
  136.     Exit Function8 a6 x3 q2 a3 \1 z9 n
  137. ToExcelErr:6 w" `1 @0 o# g' X! [
  138.     TableToExcel = False
    / f0 V  Q' x  R# A
  139. 7 f( e# Q9 r% w/ L4 D) P4 w
  140. End Function
复制代码
# G% B8 W8 B+ M

7 U' g6 J( ?( \
4 R& G6 w" X* S. `0 N; V
发表于 2019-8-18 09:22:22 | 显示全部楼层
想法不错啊,楼上的代码可行吗??
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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