小编Tam*_*viv的帖子

JAVA Apache POI Excel:为单元格区域添加边框

有没有办法在Java POI中使用Java为cellrange添加边框?

像A1:B2应该得到一个左上角 - 右下角的厚边框式?

我知道如何创建和应用单个单元格的样式,我可能会迭代通过单元格并应用适当的样式,但我相信有一个更简单的方法.

java apache excel apache-poi

6
推荐指数
2
解决办法
9397
查看次数

QueryDSL 中的多列 WHERE-IN 子句

我是 QueryDSL 的新手,并且能够在 WHERE-IN 子句中使用多列组合查询,如以下查询:

selec T1.COL1, T1.COL2, .... T1.COL10 
from T1
where (T1.COL1, T1.COL2) IN (select T2.COL1, T2.COL2 from T2 WHERE T2.COL3='a' AND T2.COL4='b')
Run Code Online (Sandbox Code Playgroud)

我有主要查询的一部分:

List<Tuple> result = queryFactory.select(t1.col,...,t1.col10)
.from(t1)
.where(???) // This is the part I'm missing
.fetch();
Run Code Online (Sandbox Code Playgroud)

但我不知道如何实现 where 子句。这如何在 QueryDSL 中完成?

提前致谢!

querydsl

6
推荐指数
1
解决办法
4236
查看次数

未加载以编程方式安装的Excel加载项

问题摘要: 为什么我从程序菜单启动Excel时加载以编程方式安装的加载项,但是在我打开安装它们的Installer.xlsm工作簿时加载?

详细信息: 我的团队开发了组织中各种用户使用的加载项层次结构.我有一个Installer.xlsm文件,它为每个加载项安装新版本.它有一个Workbook_Open方法,在打开工作簿时卸载当前安装的加载项版本并安装它们的新版本.

这种方法运作了一年多.最近我们更新了加载项的层次结构,从那时起,相同的脚本将成功运行,卸载旧的加载项并安装新的加载项.但是,当重新打开Excel时(从程序菜单或现有工作簿),似乎脚本根本没有任何效果 - 在运行之前安装的加载项仍然安装并且新的加载项甚至没有列出在"管理加载项"窗体中.这也反映在HKCU\...\Excel\Add-in Manager- 加载项列表与运行前的列表相同.

但是,如果我再次打开Installer.xlsm - 它只加载我希望它在成功运行脚本后加载的加载项(加载新安装的加载项并且不加载卸载脚本的加载项)!就像加载项安装在单个.xlsm文件的范围内一样......

笔记:

  1. 加载项不会放在Excel的加载项目录中,而是放在项目文件夹(C:\ appname\Addins\date)中.

  2. 我在Windows 7上使用Excel 2010并在我的计算机上拥有管理员权限.

  3. 这不是注册表写入访问的问题,因为如果使用Excel UI安装相同的加载项,则正确注册HKCU\...\Excel\Add-in Manager.

请帮忙解决这个谜!

执行卸载的代码部分:

    For Each ad In Application.AddIns
        For Each appName In pAppNames
            If pIniMap.item("FilePrefix").Exists(appName) Then
                filePrefix = pIniMap.item("FilePrefix").item(appName)
                If Left(ad.Name, Len(filePrefix)) = filePrefix Then
                    If ad.Installed Then
                        ad.Installed = False
                        Workbooks(ad.Name).Close False
                    End If
                End If
            Else
                logger.Warn "Entry is missing for section FilePrefix, appName=" & appName, methodName
            End If
        Next appName
    Next …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba excel-addins

6
推荐指数
1
解决办法
549
查看次数

在调试VBA时运行循环

问题

我正在尝试调试一些代码,而在中间的某个地方,我在断点处停了下来.现在我想更改一些变量并多次运行某个循环.

我到底有多远?

我知道如何更改变量,但在尝试在即时窗口中运行循环时,我会陷入困境.这是一个例子:

Dim i As Integer 
Dim j As Integer 
For i = 0 To 6
       j=i    ' Do something
Next i 
Run Code Online (Sandbox Code Playgroud)

我尝试了几种代码变体,但每次出现以下错误:

编译错误:下一个没有

其他相关信息

我试过搜索,但大部分都找到了关于循环问题的信息,而我很确定循环本身很好.(特别是当我到达断点之前到达它).

我看到有人在这种情况下唯一的地方,他把循环减少到一行,但是在我的情况下,每次这样做都是非常不切实际的.

我意识到我可以调用一个包含循环的函数,然后函数调用可能会起作用,但这再次感觉非常不切实际.所以我想这归结为以下问题.

这个问题

在Excel中调试VBA代码时运行循环的实用方法是什么?

debugging vba loops immediate-window excel-vba

5
推荐指数
2
解决办法
3165
查看次数

如何在VBA中设置和获取JSESSIONID cookie

我在Excel 2010中使用MSXML2.XMLHTTP60为Tomcat 8.5.5上托管的Java REST Web服务编写VBA Web服务客户端.

在VBA中,我希望能够JSESSIONID=E4E7666024C56427645D65BEB49ADC11从响应中获取字符串,并能够在后续请求中设置它.(想要这样做的原因是,如果Excel崩溃,似乎这个cookie丢失了,用户必须再次进行身份验证.我希望能够为用户设置最后存储的会话ID,所以如果会话是在服务器上仍然存在,它们不必在Excel客户端中重新进行身份验证.)

我看到了一些在线资源,根据这些资源,下面将拉出JSESSIONID cookie,但最后一行总是打印出来:

Dim httpObj As New MSXML2.XMLHTTP60
With httpObj
    .Open "POST", URL, False
    .SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
    .SetRequestHeader "Connection", "keep-alive"
    .Send
End With
Debug.Print "Response header Cookie: " & httpObj.GetResponseHeader("Cookie")  'This should pull the JSESSIONID cookie but is empty
Run Code Online (Sandbox Code Playgroud)

当我打印时,httpObj.GetAllResponseHeaders我看不到任何包含JSESSIONID的标题.

在相同的资源中,以下应该设置所需的cookie,但它不会(我打印出服务器上传入请求的标题,并看到我的尝试没有覆盖JSESSIONID值).

httpObj.SetRequestHeader "Cookie", "JSESSIONID=blahblah"
Run Code Online (Sandbox Code Playgroud)

我可能会错过JSESSIONED如何传输的机制,以及VBA如何以及何时提取它并设置它.

如何才能做到这一点?我很欣赏任何正确方向的指针.

cookies vba web-services jsessionid session-cookies

5
推荐指数
3
解决办法
1万
查看次数

使用直接查询不会在Oracle数据库中显示插入的数据

我无法在线找到该问题的解决方案,因此希望在这里可以找到帮助。

我继承了一个Java Web应用程序,该应用程序对Oracle数据库进行更改并显示其中的数据。该应用程序使用“ pamsdb”用户ID。该应用程序在其中一个表中插入了新行(TTECHNOLOGY)。当应用程序稍后查询数据库时,结果集包括新行(我可以在打印输出和应用程序屏幕中看到它)。但是,当我直接使用sqldeveloper(使用相同的用户 ID'pamsdb')查询数据库时,在修改后的表中看不到新行。

一些注意事项:

1)我在这里和其他位置读到,所有INSERT操作都应跟在COMMIT之后,否则其他用户将看不到更改。Java应用程序没有执行COMMIT,我认为这可能是问题的根源,但是由于我在sqldeveloper中使用了相同的用户ID,所以很惊讶我看不到那里的更改。

2)我尝试从sqldeveloper进行COMMIT WORK,但是它并没有改变我的情况。

谁能提出导致差异的原因以及如何解决?

提前致谢!

sql oracle

4
推荐指数
1
解决办法
5952
查看次数