我试图使用Java和Apache POI将简单的VLookup公式放在我的".xlsx"文件中.
这个公式有外部参考,这对我不起作用.
所以为了给你更多的细节,我正在使用poi和poi-ooxml版本3.13和excel 2007.
我将这个公式放入单元格(其中cell是一个Cell):
cell.setCellType(Cell.CELL_TYPE_FORMULA);
cell.setCellFormula("StringContainingFormula");
Run Code Online (Sandbox Code Playgroud)
然后评估公式,我尝试了三种不同的方法,但没有运气.(wb是XSSFWorkbook).
1
FormulaEvaluator mainWorkbookEvaluator = wb.getCreationHelper().createFormulaEvaluator();
Map<String,FormulaEvaluator> workbooks = new HashMap<String, FormulaEvaluator>();
workbooks.put("SpreadsheetName.xlsx", mainWorkbookEvaluator);
mainWorkbookEvaluator.setupReferencedWorkbooks(workbooks);
mainWorkbookEvaluator.evaluateAll();
Run Code Online (Sandbox Code Playgroud)
2
XSSFEvaluationWorkbook.create(wb);
Workbook nwb = wb;
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
for (Sheet sheet : nwb) {
for (Row r : sheet) {
for (Cell c : r) {
if (c.getCellType() == Cell.CELL_TYPE_FORMULA) {
try {
//evaluator.evaluateFormulaCell(c);
evaluator.evaluate(c);
} catch (Exception e) {
System.out.println("Error occured in 'EvaluateFormulas' : " + e);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
3 …
我正在尝试复制一个excel文件并将其重命名。例如,我有一个文件HI.xlsx
,我想将其复制并将其重命名为BYE.xlsx
。
我执行此操作的代码在下面,当我运行它时,文件BYE.xlsx
已创建,但已损坏。
这是我正在使用的:
fIn = open(r"HI.xlsx")
fOut = open(r"BYE.xlsx", "w")
Run Code Online (Sandbox Code Playgroud) 有没有人知道如何使用vbscript获取当前焦点的IE选项卡的句柄?
我正在尝试使用HP-UFT进行一些自动化,并且需要获得具有焦点的选项卡的句柄,以便我可以关闭它.
UFT将每个选项卡视为自己独立的浏览器,因此我可以获得选项卡集合,但是我无法找到确定哪个选项卡具有当前焦点的方法.
我使用的浏览器是IE.
我有问题C#Interop Excel获取大文件的有效范围
https://www.dropbox.com/s/betci638b1faw8g/Demo%20Training%20Data.xlsx?dl=0
这是我的文件,但实际大小是1000但我得到49998
我使用标准代码
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(txtbTrainPath.Text);
Excel.Worksheet xlWorksheet = xlWorkbook.Worksheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
xlApp.Visible = true;
xlWorksheet.Columns[5].Delete();
xlWorksheet.Columns[3].Delete();
rowCount = xlRange.Rows.Count;
colCount = xlRange.Columns.Count;
Run Code Online (Sandbox Code Playgroud)
只有这个文件无法正常工作,其他文件才能正常工作.请帮我找出问题所在.如何仅为有效大小调整工作表的大小.
我正在寻找一个可以与VBScript一起使用的替代有效正则表达式.
仅供参考,我将在HP UFT中使用它,所以我别无选择,只能使用VBScript(如果没有其他最简单的方法,我可能需要查看其他选项,例如从VBS执行Java(或其他语言)代码) .
我想要实现的目标:
从给定的一堆文本中,我想提取某些字母数字字符串.此字符串可能包括-
,_
,.
,/
,//
,等.
我所知道的只是,这个字符串后面跟着一个特定的单词(例如DIA),这个字符串后面会有一个空格.
这里我可以使用VBS代码片段作为替代方案:
此示例代码仅检索第一个匹配项.如果我找不到其他选择,我可以修改它.
serviceType = "DIA"
tempTxt = obj.GetROProperty("innertext")
If InStr(1, tempTxt, serviceType, 0) > 0 Then
iStartPoint = InStr(1, tempTxt, serviceType, 0) + Len(serviceType)
End If
tempTxt = LTrim(Mid(tempTxt, iStartPoint))
iStartPoint = InStr(1, tempTxt, " ", 1)
MsgBox Left(tempTxt, iStartPoint)
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的正则表达式:
(?<=DIA\s).*?(?=\s)
Run Code Online (Sandbox Code Playgroud)
这是我尝试过并成功运作的演示.我只需要找到VBScript替代品.
更新
这是我在尝试建议的正则表达式后得到的结果:(
返回值看起来不同,因为我使用不同的输入文本.)
这是我正在使用的代码:
Call RegExpMultiSearch(tempTxt, "DIA\s+(\S+)")
Public RegMatchArray
Function RegExpMultiSearch(targetString, ptrn)
'CREATE THE …
Run Code Online (Sandbox Code Playgroud) 我正在研究VBA,我必须通过传递一些值来调用vbscript.
这是代码:
''VBA
'Below values are on different cells of Excel file which I am reading
'into a global variable then pass it to vbscript.
'SFilename = VBscript file path
'QClogin = "abc"
'QCpassword = "abc"
'sDomain = "xyz"
'sProject = "xyz123"
'testPathALM = "Subject\xyz - Use it!\xyz_abc"
'QCurl = "http://xxx_yyy_zzz/qcbin/"
Set wshShell = CreateObject("Wscript.Shell")
Set proc = wshShell.exec("wscript " & SFilename & " " & QClogin & _
" " & "" & QCpassword & " " & "" …
Run Code Online (Sandbox Code Playgroud) 如您所见,有时我们需要在 Excel 文件中添加大量超链接,而作为程序员,您不想手动完成,而是希望以编程方式完成。我已经通过 Internet 进行了搜索,但我只找到了如何以编程方式添加 Web 的超链接,而不是当前的 excel 文件超链接。所以我认为找出如何以编程方式添加当前 excel 文件的超链接(或本地超链接)将是一个很好的理想选择。
我正在处理一个.vbs文件,其中我使用下面的代码行连接到数据库,而不是运行一些查询.
Set cm = CreateObject("ADODB.Command")
cm.ActiveConnection = "Driver={Microsoft ODBC for Oracle};Server ="+sInst+"; UID="+sUID+";PWD="+sPWD
cm.CommandType = 1
cm.CommandText = sSQL
cm.Execute()
Set cm = Nothing
Run Code Online (Sandbox Code Playgroud)
对我来说奇怪的是,当我将这些行复制到QTP并从QTP运行时,它运行正常.但是当运行.vbs文件(通过双击和从cmd),它给我以下错误:
[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序
我还有其他机器,它的工作正常.我尽力验证机器中的所有东西,但我没有得到它.
我感谢任何想法/帮助/建议.
谢谢.
快速更新:
由于vbs无法正常工作,我尝试使用googled并使用以下行创建批处理文件:
C:\Windows\SysWoW64\cscript.exe //NoLogo filepath\xyz.vbs
Run Code Online (Sandbox Code Playgroud)
它现在正在工作.
所以问题是如何使用SysWoW64中的 ODBC运行vbs 而不是来自system32 ...?
我正在处理Excel报告,我需要传递一个链接,可以将我带到一个引用的单元格.
在下面的示例中,我在同一工作簿上有两个工作表.现在,如果我单击Sheet:1上的单元格"A1",那么它应该带我到Sheet:2上的单元格"E1".
我知道通过粘贴特殊我可以传递超链接,但棘手的部分是Sheet上的数据:2是动态的所以我不能去那条路线.
在查看谷歌之后,我发现了很多东西,所以我把它们组合在一起,但它却抛出错误"参考无效".
这是我在Sheet上的单元格"A1"上使用的公式:1:
=HYPERLINK("[Sample.xlsx]Sheet:2!(ADDRESS(MATCH(""ABC"",BEFORE,0),MATCH(""ABC"",BEFORE,0),1))","ABC")
Run Code Online (Sandbox Code Playgroud)
这里之前是覆盖A1到E1的名称范围.
a b c d e
1. abc
Run Code Online (Sandbox Code Playgroud)
a b c d e
1. x x x x abc
Run Code Online (Sandbox Code Playgroud)
感谢您的意见.
我在 VBA 中有一个函数可以处理单元格中的日期。但当By ref error
我选择细胞时我得到了。可能是什么问题?这是我的代码
Function DifferenceInYears(existdate As Date, estimdate As Date) As Double
Dim yearDifference As Integer
Dim monthDifference As Integer
Dim dayDifference As Integer
yearDifference = 0
monthDifference = 0
dayDifference = 0
If (estimdate <= existdate) Then
MsgBox "Input correct range"
GoTo myerr
End If
Dim tempDate As Date
IsDateLeapDay = False
Dim existYear As String
Dim estimYear As String
existYear = Year(existdate)
estimYear = Year(estimdate)
estimMonth = Month(estimdate)
existMonth = Month(existdate)
and so on...
Run Code Online (Sandbox Code Playgroud)