没有Excel的VB6到Xls

我必须将VB6应用程序中不同窗体中的几个Flexgrids的数据传输到没有安装Excel的计算机上的.xls文件。 Openoffice,LibreOffice等安装在这些电脑中。

我开发了一个将FlexGrid作为参数并将其数据传输到xls的通用过程。 此过程使用DAO。 由于各种FlexGrids中的各种列包含各种数据types,因此在过程中我将字段定义为types“dbText”。

t.Fields.Append t.CreateField(pFlxGrd.TextMatrix(0, j), dbText) 

从任何网格转移到xls工作正常。 但是,一个问题是,对于包含数据的每个单元格,插入单引号以指示其文本types的数据。

有没有办法删除或避免这些引号? 由于数字数据将被用于求和等,所以这些引号必须被删除。

您可以使用Jet引擎,ODBC或accdb来执行此操作。 如果您使用的是64位系统,请确保从Windows \ syswow64 \ cmd中的32位cmd提示符运行。 我没有安装VB6,所以这个解决scheme只在vbscript中testing过,非常相似。 您只需将types添加到昏暗的语句。

 dim connExcel, connExcelStr, rsExcel, xlpath ' Get the parameter from the command line xlpath = WScript.Arguments.Item(0) ' Create the connection set connExcel = CreateObject("ADODB.Connection") ' Setup the connection string ' xlpath = "U:\JetExcel\data.xls" connExcelStr = "Driver={Microsoft Excel Driver (*.xls)};" connExcelStr = connExcelStr & "Dbq=" & xlpath & ";" connExcelStr = connExcelStr & "FIRSTROWHASNAMES=1;" connExcelStr = connExcelStr & "READONLY=FALSE;" connExcelStr = connExcelStr & "CREATE_DB=""" & xlpath & """;" ' Create a workbook WScript.echo connExcelStr connExcel.Open connExcelStr ' Create a worksheet sqlQuery = "create table [Sheet1] (ID Number, FirstName Text, LastName Text)" WScript.echo sqlQuery set rsExcel = connExcel.Execute(sqlQuery) ' Put data into the worksheet sqlQuery = "insert into [Sheet1] (ID, FirstName, LastName) values" sqlQuery = sqlQuery & "(1, 'Humpty', 'Dumpty')" WScript.echo sqlQuery set rsExcel = connExcel.Execute(sqlQuery) ' Close workbook connExcel.Close set connExcel = nothing 

如果脚本命名为xxx.vbs,则创build一个Excel工作表

 cscript xxx.vbs test.xls 

有一个更快的解决scheme来复制从vbForums中显示的flexgrid(不带引号)的数据 – 这种方法的优点是,它们的工作速度相当快,相比之下,发送/引入数据逐个单元格

 Private Sub FlexToExcel() Dim xlObject As Excel.Application Dim xlWB As Excel.Workbook Set xlObject = New Excel.Application 'This Adds a new woorkbook, you could open the workbook from file also Set xlWB = xlObject.Workbooks.Add Clipboard.Clear 'Clear the Clipboard With MSFlexGrid1 'Select Full Contents (You could also select partial content) .Col = 0 'From first column .Row = 0 'From first Row (header) .ColSel = .Cols - 1 'Select all columns .RowSel = .Rows - 1 'Select all rows Clipboard.SetText .Clip 'Send to Clipboard End With With xlObject.ActiveWorkbook.ActiveSheet .Range("A1").Select 'Select Cell A1 (will paste from here, to different cells) .Paste 'Paste clipboard contents End With ' This makes Excel visible xlObject.Visible = True End Sub 

请参阅此链接了解更多信息。