以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  要合并的表名称不固定但有规律,应该怎么合?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=56912)

--  作者:xiaoyongxg2
--  发布时间:2014/9/15 12:18:00
--  要合并的表名称不固定但有规律,应该怎么合?
Dim  dlg As New  OpenFileDialog
dlg.Filter=  "Excel 97-2003 工作簿(*.xls)|*.xls|Excel 工作簿(*.xlsx)|*.xlsx"
If dlg.ShowDialog =  DialogResult.Ok Then
    Dim mg As New Merger
    mg.SourcePath =   dlg.FileName
    mg.Format =  "excel"
    mg.SourceTableName =  "8月工资表$"or"9月工资表"or"10月工资表"(可以这样写吗?如果不对应该怎么写?请老师指点)
    mg.DataTableName =  "工资表"   \'指定接收数据的表
    mg.Merge()  \'开始合并
End If
MessageBox.Show("导入完成" )

--  作者:jspta
--  发布时间:2014/9/15 12:42:00
--  
以下是引用xiaoyongxg2在2014-9-15 12:18:00的发言:
Dim  dlg As New  OpenFileDialog
dlg.Filter=  "Excel 97-2003 工作簿(*.xls)|*.xls|Excel 工作簿(*.xlsx)|*.xlsx"
If dlg.ShowDialog =  DialogResult.Ok Then
dim arr() as string = {"8月工资表$","9月工资表","10月工资表")
for each ar as string in arr
    Dim mg As New Merger
    mg.SourcePath =   dlg.FileName
    mg.Format =  "excel"
    mg.SourceTableName =  ar
    mg.DataTableName =  "工资表"   \'指定接收数据的表
    mg.Merge()  \'开始合并
next
End If
MessageBox.Show("导入完成" )


--  作者:xiaoyongxg2
--  发布时间:2014/9/15 13:15:00
--  
.NET Framework 版本:2.0.50727.8009
Foxtable 版本:2012.11.29.1
错误所在事件:
详细错误信息:
System.Data.OleDb.OleDbException: Microsoft Office Access 数据库引擎找不到对象“6月工资表”。请确定该对象存在,并正确拼写其名称和路径名。
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   在 Foxtable.Merger.Merge()

--  作者:xiaoyongxg2
--  发布时间:2014/9/15 13:21:00
--  
这样不行啊,他会挨个出错,直到对的一个才导入。
--  作者:jspta
--  发布时间:2014/9/15 13:39:00
--  
你需要判断表名的正确性啊,我只是给你个参考的方法
--  作者:Bin
--  发布时间:2014/9/15 14:07:00
--  
同一个问题不要反复提问
--  作者:有点甜
--  发布时间:2014/9/15 14:16:00
--  
Dim  dlg As New  OpenFileDialog
dlg.Filter=  "Excel 97-2003 工作簿(*.xls)|*.xls|Excel 工作簿(*.xlsx)|*.xlsx"
If dlg.ShowDialog =  DialogResult.Ok Then
    Dim Book As New XLS.Book(dlg.FileName)
    For Each sheet As XLS.Sheet In Book.Sheets
        Dim mg As New Merger
        mg.SourcePath = dlg.FileName
        mg.Format =  "excel"
        mg.SourceTableName = sheet.Name.Replace("$", "") & "$"
        mg.DataTableName =  "工资表"   \'指定接收数据的表
        mg.Merge()  \'开始合并
    Next
End If
MessageBox.Show("导入完成" )

--  作者:xiaoyongxg2
--  发布时间:2014/9/15 15:13:00
--  
谢谢甜老师