使用Dxl向Excel写入数据:B1单元格写入“Apples”失败求助
修复Dxl写入Excel B1单元格的问题
你的代码在写入单元格时存在两个关键错误:
- 变量名误用:使用了未定义的
sheet变量,实际应使用之前获取的工作表句柄objSheet - 写入逻辑错误:直接用
get方法传值不符合OLE操作Excel的规范,正确流程是先获取目标单元格的Range对象,再设置其Value属性
修正后的关键代码段
替换原代码中出错的那一行,改为以下内容:
// 获取B1单元格的Range对象(行号1,列号2) OleAutoObj objCellRange = null; OleAutoArgs cellArgs = create(); put(cellArgs, 1); // 指定行 put(cellArgs, 2); // 指定列(B列对应第2列) oleCheck oleGet(objSheet, "Cells", objCellRange, cellArgs); // 向单元格写入"Apples" oleCheck olePut(objCellRange, "Value", "Apples");
完整修正代码
void oleCheck (string s) { if (!null s) { print "An Error occurred: " s halt; } } OleAutoObj objExcel = oleCreateAutoObject("Excel.Application") // Make it visible olePut(objExcel, "Visible", true) OleAutoArgs args = create(); // get Application.Workbooks OleAutoObj objWorkbookCollection= null; oleCheck oleGet ( objExcel, "Workbooks", objWorkbookCollection) // Add a workbook --> Application.Workbooks.add () oleCheck oleMethod(objWorkbookCollection, "Add") // Get a handle to the newly added workbook --> Application.ActiveWorkbook OleAutoObj objWorkbook = null oleCheck oleGet (objExcel, "ActiveWorkbook", objWorkbook) // Get a handle to the Sheets collection --> ActiveWorkbook.Sheets OleAutoObj objSheetsCollection = null // 修正:从当前工作簿获取Sheets集合,而非全局Excel对象 oleCheck oleGet (objWorkbook, "Sheets", objSheetsCollection ) // Add a sheet ... ActiveWorkbook.Sheets.Add oleCheck oleMethod(objSheetsCollection , "Add") // Get a handle to the sheet ... OleAutoObj objSheet = null oleCheck oleGet (objWorkbook, "ActiveSheet", objSheet) // Get the Sheets Name string sSheetName = null; oleCheck oleGet (objSheet, "name", sSheetName) // 获取B1单元格并写入内容 OleAutoObj objCellRange = null; OleAutoArgs cellArgs = create(); put(cellArgs, 1); put(cellArgs, 2); oleCheck oleGet(objSheet, "Cells", objCellRange, cellArgs); oleCheck olePut(objCellRange, "Value", "Apples"); print "New Sheet with name " sSheetName " added!"
另外补充一处原代码的小问题:获取Sheets集合时,原代码从objExcel获取会拿到Excel全局的Sheets,正确应该从当前工作簿objWorkbook获取,已在修正代码中调整。
内容的提问来源于stack exchange,提问作者NickHalden
相关产品推荐
相关产品推荐

