要在vb6.程序中调用excel表格中的数据用在程序计算中,并将计算结果输出到所调用数据的表格中

要在vb6.程序中调用excel表格中的数据用在程序计算中,并将计算结果输出到所调用数据的表格中,第1张

给楼主提个建议:以后尽量把表描述清楚些。比如标题几行、列包括哪些等等。。

Private Sub Command1_Click()

Dim xlsApp As Object, xlsWb As Object, xlsWs As Object '定义Excel对象

Set xlsApp = CreateObject("ExcelApplication") '建立excel对象

Set xlsWb = xlsAppWorkbooksOpen("d:\Book1xls") '要打开的文档路径。请用带全路径的文件名替换d:\Book1xls。当然,你也可以用文件浏览获取文件路径。

Set xlsWs = xlsWbWorksheets(1) '选工作表。多张表时通过序号指定不同的表

xlsWsActivate '选定的工作表获得焦点

xlsAppVisible = False '隐藏

Dim iRowCnt As Integer '行数

Dim iColCnt As Integer '列数

Dim m As Integer '当前行数

Dim n As Integer '当前列数

Dim zf As Integer '总分

iRowCnt = xlsWsUsedRangeRowsCount '总行数

iColCnt = xlsWsUsedRangeColumnsCount '总列数

If iRowCnt > 1 Then '用实际的标题行数替换数字1

With xlsWs

nCount = 2 '把数字2用姓名所在的列数替换

m = 2 '用实际的标题行数+1替换数字2

Do While m <= iRowCnt

strCardNo = Trim(cells(nCount, 2)) '用实际的标题行数+1替换数字2

'这里根据第二列数据为空判断记录结束

If Len(strCardNo) = 0 Then

Exit Do

Else

zf = 0 '循环前把总分归零

For n = 3 To iColCnt + 1 '把数字3用姓名所在的列数+1替换

If n = iColCnt + 1 Then

cells(m, n) = zf

Else

zf = zf + cells(m, n)

End If

Next n

m = m + 1

End If

Loop

End With

MsgBox "恭喜~~请求的 *** 作已完成!", 64 + 0 + 4096, "提示"

Else

MsgBox "由于你选定的工作表没有数据, *** 作被终止!", 64 + 0 + 4096, "提示"

End If

xlsWbSave

xlsWbClose '关闭excel文件

xlsAppQuit '退出excel

Set xlsWs = Nothing

Set xlsWb = Nothing

Set xlsApp = Nothing

End Sub

如果调用了EXCEL,包括application, workbook, worksheet对象。调用结束后,是不是必须要有除了appquit(),还要app=nothing, workbook=nothing, worksheet=nothing?否则是不是excel的进程总存在。

------------------------------------------------------

不用肯定不行,用了未必都行,有的时候EXCEL。EXE死活都在运行

在其中设置单元格的类型(文本,数字等),如何直接设置一列,range()是否能实现?

------------------------------------------------------

全选一列,再设置单元格,录制宏看一下脚本

用cellsnum……local(忘记怎么拼写了)设置的时候各种格式都用什么来表示,有没有预定义的类型表示呢?

----------------------------------------------

不知道

最后问问,是否是其他的所有 *** 作都可以通过excel里面录制宏的方法,查看到各种设置的方法,是否都通用?

-----------------------------------

基本都可以实现

当不想用A,B,C……表示列,是否都可以用数字来表示?

--------------------------------------

可以,RANGE里的参数可以是数字

针对此问题,写了一个测试,代码如下:package cnforyformula;import javaioFileInputStream;import javaioFileNotFoundException;import javaioFileOutputStream;import javaioIOException;import orgapachepoihssfusermodelHSSFCell;import orgapachepoihssfusermodelHSSFRow;import orgapachepoihssfusermodelHSSFSheet;import orgapachepoihssfusermodelHSSFWorkbook;import orgapachepoipoifsfilesystemPOIFSFileSystem;public class TestFormula {/ 测试POI处理公式 问题描述:通过POI导入的数据后,引用导入数据的原有公式单元格不能显示出来,需要重新定位到公式单元 格然后重新转入公式才行成得结果 解决办法:重新对公式单元格设置公式 相关文件:testxls文件中手工设置单元格B2=C2+D2/public static void main(String[] args) throws FileNotFoundException {POIFSFileSystem fs;try {fs = new POIFSFileSystem(new FileInputStream("testxls"));HSSFWorkbook wb = new HSSFWorkbook(fs);HSSFSheet sheet = wbgetSheet("Sheet1");HSSFRow row = sheetgetRow((short) 1);HSSFCell cell = rowgetCell((short) 2);cellsetCellValue((short) 5);cell = rowgetCell((short) 3);cellsetCellValue((short) 40);HSSFCell cell1 = rowgetCell((short)1);if (HSSFCellCELL_TYPE_FORMULA == cell1getCellType()) {//取得公式单元格的公式,重新设置cell1setCellFormula(cell1getCellFormula());}FileOutputStream fileOut = new FileOutputStream("testxls");wbwrite(fileOut);fileOutclose();

用C#为例子:

调用后立即使用GC回收它就可以。

OpenNewExcelApp();

GCCollect();

OpenNewExcelApp();

{

ExcelApplicationClass exec= new ExcelApplicationClass();

execVisible = true ;

try

{

你的代码区

}

catch(Exception E)

{

MessageBoxShow(EMessage);

}

finally

{

if(exec!=null)exec = null;

}

}

一定要记得将 excel Null 掉才会回收的。

也就是上面的 finally 语句块

以上就是关于要在vb6.程序中调用excel表格中的数据用在程序计算中,并将计算结果输出到所调用数据的表格中全部的内容,包括:要在vb6.程序中调用excel表格中的数据用在程序计算中,并将计算结果输出到所调用数据的表格中、在VB.net里调用excel程序的时候的几个问题、Java程序如何调用Excel中的各种公式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9829057.html

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

发表评论

登录后才能评论

评论列表(0条)

保存