我发现我原来的编的程序只适合,标准的EXCEL的显示,
例如:EXCEL格式是这样的
安徽 合肥
安徽 芜湖
安徽 蚌埠
导入结果正常
如果EXCEL出现合并项时比如一对多的显示的时候,例如:安徽 合肥
芜湖
蚌埠
这种形式的表格时候导入数据库的时候就发现纪录形式是这样的了:
安徽 合肥
芜湖
蚌埠
例如:EXCEL格式是这样的
安徽 合肥
安徽 芜湖
安徽 蚌埠
导入结果正常
如果EXCEL出现合并项时比如一对多的显示的时候,例如:安徽 合肥
芜湖
蚌埠
这种形式的表格时候导入数据库的时候就发现纪录形式是这样的了:
安徽 合肥
芜湖
蚌埠
解决方案 »
- 如何知道 外部窗口上 多选框是否被勾选?
- 学ACM有用吗?
- 十分着急的问题:VB界面闪中动态加载自定义控件时的问题,请高手解答
- UNIX服务器WINDOWS客户端用VB的FTP编程如何实现删除服务器上的多个文件?在线等待
- 如何使用DirectShow中的GetCurrentImage,给100分
- 那里有VB6下载
- Java 、Struts 、Asp.net三大版本代码生成器,要的快去下载吧!
- vb将csv文件读到excel里
- 救命
- 如何动态创建Access2000的数据库?请各方好友帮忙!
- 谁知道哪有VB的代码排版缩进工具,先谢了。:)
- 打开论坛,要输入密码,有个对话筐会跳出来,问是否要保存密码,这些功能如何用vb实现?
1。如果你的Excel是严格连续的,有规则的,就是说合并行的下面是另一条数据或者合并行比如A1 B1
+--------+----------+
| Anhui | A |
+ +----------+
| | B |
+ +----------+
| | C |
+--------+----------+
|Beijing | V |
+ +----------+
| | B |
+--------+----------+
A5 B5那你可以在取到A1=Anhui以后用一个全局变量保存这个值
在取A2的时候因为是""的所以引用全局变量A2=Anhui
当取到A4<>"" 而=Beijing了,就重新给全局变量负值这种方法快一点,但是要求Excel表格严格有规律2。判断是否合并
每读一个Cell的时候
Set ma = Range("A1").MergeArea
MsgBox ma.Address得到结果A1:A3
那你可以根据这个结果来计算可能还有更好的办法,问问李宏根兄,他是这方面的高手
Set ma = Range("A1").MergeArea
MsgBox ma.Address在计算这个之前先
if range("a1").mergecell=true then
取得合并区域....计算。
Endif
这段代码估计可以满足你的要求
-------------------------------------------------Dim m_sLastCity '保存读到的上一个城市Dim asCity(), asData()
Dim m_lCounterSub ReadData()
Dim nRow, nCol
Dim sCurrentCity
Dim sData
m_lCounter = 0
For nRow = 1 To 12 '多少行你自己改一下
sCurrentCity = Cells(nRow, 1)
sData = Cells(nRow, 2)
If sCurrentCity = "" Then '判断是否没有数据
If m_sLastCity = "" Then
Debug.Print "Found an illegal Execl row!"
Else
sCurrentCity = m_sLastCity
End If
Else
m_sLastCity = sCurrentCity
End If
If sCurrentCity <> "" And sData <> "" Then
'合法的行,进行保存。当然,我是保存到数租里面,你可能要价到数据库里面,自己改了
ReDim Preserve asCity(m_lCounter)
ReDim Preserve asData(m_lCounter)
asCity(m_lCounter) = sCurrentCity
asData(m_lCounter) = sData
m_lCounter = m_lCounter + 1
End If
Next
End Sub