-1
我有一個以文檔形式存在的100,000個問題的問題銀行。這些問題在文字中包含一些包含圖像。是否有任何有效的方法一次提取問題(,包括圖像)並將它們導入到SQL數據庫中?寧願不必將文本轉換爲圖像,因爲這些問題可能需要編輯。謝謝!將Word文檔中的內容提取到SQL數據庫的最佳方法是什麼?
我有一個以文檔形式存在的100,000個問題的問題銀行。這些問題在文字中包含一些包含圖像。是否有任何有效的方法一次提取問題(,包括圖像)並將它們導入到SQL數據庫中?寧願不必將文本轉換爲圖像,因爲這些問題可能需要編輯。謝謝!將Word文檔中的內容提取到SQL數據庫的最佳方法是什麼?
這裏是一個開始
分離問題編號,問題文本,每個答案數量以及每個答案文字
然後將它們打印在即時窗口
,請與您的文檔
的一個嘗試Option Explicit
Sub parse()
Dim rgx As Object
Set rgx = CreateObject("vbscript.regexp")
rgx.MultiLine = True
rgx.Global = True
rgx.pattern = "^[\s]+|[\s]+$"
Dim s As String
Dim i As Integer
Dim qNum As Long
Dim qest As String
Dim aNum As Integer
Dim answ As String
Dim par As Paragraphs
Set par = ActiveDocument.Paragraphs
Dim p As Integer
For p = 1 To par.Count
s = rgx.Replace(par(p).Range.Text, "") ' trim whitespace (leading and trailing)
' Debug.Print "--- "; s
Select Case Left(s, 1)
Case "0" To "9" ' question found
qNum = CDec(Split(s, ".")(0)) ' number
i = 1
qest = rgx.Replace(Split(s, ".", 2)(1), "") ' first line of text
Do While True
s = rgx.Replace(par(p + i).Range.Text, "") ' check for multiline question
If Len(s) > 0 Then
If Left(s, 1) = "(" Then
p = p + i - 1 ' it is an answer line, so exit
Exit Do
Else
qest = qest & vbNewLine & s ' assemble multiline question
End If
End If
i = i + 1
Loop
Debug.Print vbNewLine; "question # "; qNum; vbTab; qest
Case "(" ' answer found
aNum = CDec(Mid(s, 2, 1)) ' number
answ = Split(s, ")", 2)(1) ' text
Debug.Print "answer # "; aNum, answ
End Select
Next p
End Sub
對不起,遲了回覆,目前正趕上其他項目。非常感謝您分享代碼,只要我有時間繼續完成該項目,就會立即更新進度。 – dasanibottle
當你說SQL數據庫時,你是否有任何特定的dbms? – jarlh
@jarlh感謝您的及時回覆。使用的dbms是MS SQL Server Management Studio 17.2。仔細一看,一些問題包含Word對象,如空框。可以肯定的是,這會讓事情變得複雜...... VBA腳本仍然會是一條路嗎? – dasanibottle
我更換了一些標籤,以獲得更好的關注。 – jarlh