VSflexgrid 读取EXCEL 指定行列数据(如第一二列)

VSflexgrid 读取EXCEL 指定行列数据(如第一二列),第1张

可将函数加入文档路径、行列参数,调用时输入需要的参数即可。

举例如下:

Public Function GetExlCells(FileName As String, iRow As Integer, iCol1 As Integer, iCol2 As Integer)

NewBook As New ExcelWorkbook

Dim str1 As String, str2 As String

Set NewApp = New ExcelApplication

Set NewBook = NewAppWorkbooksOpen(FileName)

Set NewSheet = NewBookWorksheets(1)

str1 = NewSheetCells(iRow, iCol): str2 = NewSheetCells(iRow, iCol2)

fgTextMatrix(2, 1) = str1

fgTextMatrix(2, 2) = str2

NewBookClose

NewAppQuit

End Function

按列读取的方法: String pathname = "E:\\files\\titlexlsx"; File file = new File(pathname); InputStream in = new FileInputStream(file); //得到整个excel对象 XSSFWorkbook excel = new XSSFWorkbook(in); //获取整个excel有多少个sheet

可以用VBA解决,需汇总的工作簿中文件放在D:\test下,要汇总的数据在工作表sheet1的B列第二行起,以下为程序:

Private Sub CommandButton1_Click()

Dim FolderName As String, wbName As String, r As Long, cValue As Variant

Dim wbList() As String, wbCount As Integer, i As Integer

FolderName = "d:\test"

wbCount = 0

wbName = Dir(FolderName & "\" & "xls")

While wbName <> ""

wbCount = wbCount + 1

ReDim Preserve wbList(1 To wbCount)

wbList(wbCount) = wbName

wbName = Dir

Wend

If wbCount = 0 Then Exit Sub

j = 2

For i = 1 To wbCount

Dim wb As Workbook

ApplicationScreenUpdating = False

Set wb = WorkbooksOpen(FolderName & "\" & wbList(i), True, True)

k = 2

Do Until wbWorksheets("sheet1")Range("B" & k)Formula = ""

With ThisWorkbookWorksheets("sheet1")

Range("B" & j)Formula = wbWorksheets("sheet1")Range("B" & k)Formula

End With

j = j + 1

k = k + 1

Loop

wbClose False

Set wb = Nothing

ApplicationScreenUpdating = True

Next i

End Sub

读取excel中的数据,先加载好excel表,然后逐行逐列读取即可。

对于上面的行数不一样,其实行数是一样的,只是下面两行的C列数据为空而已,代码中加上判断即可。

示例代码如下:

for(int rowIndex=0;rowIndex<sheetgetPhysicalNumberOfRows();rowIndex++)

{

Row row = sheetgetRow(rowIndex);

if(row == null) continue;

for(int cellIndex=0;cellIndex<rowgetPhysicalNumberOfCells();cellIndex++)

{

Cell content = rowgetCell(cellIndex);

if(content== null) continue; //判断空

//对于内容进行 *** 作

}

}

有问题欢迎提问,,谢谢!

打开一个Excel文件,鼠标右击下面的工作表(如sheet1)。选择“查看代码”,就可以打开VBA编辑界面。

选择如下图所示的下拉菜单,选择“worksheet”。

选择如下图所示的下拉菜单,选择对应的触发模式。这里我们选择BeforeDoubleClick,意思就是说:在本工作表鼠标双击(之前),将触发下面的代码程序。(activate意思是说:在sheet表被选取的时候,就触发;Change意思是说:在这个模式下,只要sheet(工作表)发生变化,就将触发;Before Right Click是指在鼠标右击之前触发;SelectionChange是指在鼠标焦点发生变化时,触发。)

选择完成后,我们会看到下面出现了两条代码;这俩条代码其实是在声明一个函数。

将鼠标放置在这两行代码之间,我们写上执行语句

Sheet1Cells(1, 3) = Sheet1Cells(1, 1) + Sheet1Cells(1, 2)

其中:sheet1cells(1,3)就是指第一行第三列的这个单元格;Sheet1Cells(1, 1)就是指第一行第一列的这个单元格;Sheet1Cells(1, 2)就是指第一行第二列的单元格。执行语句的意思是:将cells(1,1)和cells(1,2)的值相加,并赋值给cells(1,3)

注意的是:写语句的时候,输入法一定要是输入字母的模式。要不然你的语句会报错。

然后点击保存,回到Excel的原始界面。在cells(1,1)和cells(1,2)中输入两个数值。(楼主输入的是:125895和78954)

注意看:现在的cells(1,3)数值是空的。

在sheet1的工作表中,双击你的鼠标。你会发现,cells(1,3)的值变成了cells(1,1)和cells(1,2)的和。(204849=125895+78954)

8

总结:其实VBA主要是触发和指定单元格。

1触发的原理其实很简单,大家可以选择不同的触发模式,试一下就知道是怎么回事了。

2至于怎么指定到单元格,大家可以看看cells语句和Range语句。

补充说明: VBA不需要过于复杂的VB语句。你只需要知道VB怎么写怎加减乘除,怎么使用IF语句,就可以满足大部分的需求了。

最后希望大家能够驾驭VBA,顺便送大家一句话:

眼见为虚,耳听为虚,只有运行才是硬道理。

别忘了点赞哦,亲,嘿嘿。

'引用:

'添加对该对象的引用 工程菜单-->引用,找到 Microsoft Scripting Runtime

'引用microsoft Excel 140 object library

'

Dim elApp As ExcelApplication

Dim elBooks As ExcelWorkbook

Dim ekSheet As ExcelWorksheet

Dim TblMap_Card '创建一个变量

Private Sub Command1_Click()

Dim i As Integer

openEl

Set dic = CreateObject("ScriptingDictionary")

'MsgBox ekSheetCells(RowsCount, 1)End(3)Row

For i = 2 To ekSheetCells(RowsCount, 1)End(3)Row

If dicExists(ekSheetCells(i, 2)Value) Then

dic(ekSheetCells(i, 1)Value) = dic(ekSheetCells(i, 1)Value) + ekSheetCells(i, 2)Value

Else

dic(ekSheetCells(i, 1)Value) = ekSheetCells(i, 2)Value

End If

Next i

ekSheetRange("H:J")Clear

'ekSheetCells(1, 9)Resize(1, 2) = Array("商品", "售量")

ekSheetCells(2, 9)Resize(dicCount, 1) = ApplicationTranspose(dicKeys)

ekSheetCells(2, 10)Resize(dicCount, 1) = ApplicationTranspose(dicItems)

End Sub

Private Sub openEl()

Dim myPath As String

myPath = "\weekxlsx"

Set elApp = CreateObject("ExcelApplication")

Set elBooks = elAppWorkbooksOpen(AppPath & myPath)

Set ekSheet = elBooksWorksheets("Sheet1")

'Set ekSheet = elBooksWorksheets(1)

elAppVisible = True

End Sub

张志晨:VB6的,测试通过。界面上只有一个按钮。

以上就是关于VSflexgrid 读取EXCEL 指定行列数据(如第一二列)全部的内容,包括:VSflexgrid 读取EXCEL 指定行列数据(如第一二列)、Java POI读取Excel的时候怎么按列读取、如何把多份EXCEL文件里的所有工作簿中的指定某一列经过批处理提取汇总到一份新表里最好用简单的vbs实现。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9496633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存