excel表删除指定行与列,创建临时表,后遍历excel表行与列,将execl数据读取到临时表中
代码是否还可以进一步简化,敬请老师们多多指导!
当前代码如下:【实现表中数据全部逐行逐列写入临时表】
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xlsx; *.xls" '设置筛选器
Dim dr As DataRow
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
Dim dtb As New DataTableBuilder(FileSys.GetName(dlg.FileName))
dtb.AddDef("A", Gettype(String),50)
dtb.AddDef("B", Gettype(String),50)
dtb.AddDef("C", Gettype(String),50)
For ii As Integer = 1 To 50
dtb.AddDef("A" & ii, Gettype(Integer))
Next
dtb.Build()
MainTable=Tables(FileSys.GetName(dlg.FileName))
'Tables(FileSys.GetName(dlg.FileName)).DataTable.DeleteFor("")
Dim App As New MSExcel.Application
try
'这个部分以下根据个人表格情况,灵活选择是否使用,不需要就注释或删除'
Dim Book As New XLS.Book(dlg.FileName) '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Sheet.Rows.RemoveAt(26) '在删除第26行
Sheet.Rows.RemoveAt(25) '在删除第26行
For ii As Integer = 0 To 5
Sheet.Rows.RemoveAt(0) '在删除第1-5行
Next
For ii As Integer = 0 To 3
Sheet.Cols.RemoveAt(0) '在最前面插入三列
Next
Book.Save(dlg.FileName)
'这个部分以上根据个人表格情况,灵活选择是否使用,不需要就注释或删除'
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
'对A列从第1行开始向下查找,直到找到最后一个非空单元格为止,并得到其行号.也就是有内容的开始行
Dim FirstRow As Integer = Ws.Range("A3").End(MSExcel.XlDirection.xlDown).Row
'对A列从第1行开始向下查找,直到找到最后一个非空单元格为止,并得到其行号.也就是有内容的开始行
Dim Rg As MSExcel.Range = Ws.UsedRange
Dim ary = rg.value
Dim Book2 As New XLS.Book(dlg.FileName) '定义一个Excel工作簿
Dim Sheet2 As XLS.Sheet = Book2.Sheets(0) '引用工作簿的第一个工作表
Dim bb2 As Integer=FirstRow 'Sheet2.Rows.Count
Dim cc2 As Integer=Sheet2.cols.Count
output.show(bb2 & "||||" & cc2)
'Dim Rg As MSExcel.Range = Ws.Range("A10")'以这个指定的单元格为基准
'Rg.EntireColumn.Delete(MSExcel.XlDirection.xlToLeft) '右面的单元格左移
'重点看这里,自己根据表格位置调整导入把---
For n As Integer = 2 To bb2 ‘2代表从第二行开始逐行遍历’
Dim ro As Row = Tables(FileSys.GetName(dlg.FileName)).AddNew ‘根据需要新增指定行,可遍历新增多行,也可以根据需要改变位置,只新增一行’
For i As Integer = 1 To cc2 ‘1代表从第一个列开始读取’
ro(i+2) = ary(n,i) ‘i+2代表数据从第三列后开始填充’
Next
Next
'重点看这里,自己根据表格位置调整导入把---
MessageBox.Show("导入成功!","恭喜!")
catch ex As exception
msgbox(ex.message)
MessageBox.Show("导入失败!","恭喜!")
finally
app.quit
End try
End If
运行效果如图:
此主题相关图片如下:12.png
有没有办法直接读取指定的某行和某列来读取值呢?
直接将红色部分代码更换如下:
For n As Integer = 2 To bb2
Dim ro As Row = Tables(FileSys.GetName(dlg.FileName)).AddNew
'For i As Integer = 1 To cc2
ro("A1") = ary(n,2)
'Next
Next
运行效果如图:
此主题相关图片如下:123.png
如果是只想读取指定的一行中的某列来读取值呢?
直接将红色部分代码更换如下:
Dim ro As Row = Tables(FileSys.GetName(dlg.FileName)).AddNew
'For n As Integer = 2 To bb2
'For i As Integer = 1 To cc2
ro("A1") = ary(2,2) ‘新增一行 将A1字段的值更新为ary(2,2)’
'Next
'Next
运行效果如图:
此主题相关图片如下:124.png
[此贴子已经被作者于2022/9/23 15:48:37编辑过]