给楼主提个建议:以后尽量把表描述清楚些。比如标题几行、列包括哪些等等。。
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中的各种公式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)