我正在尝试构建一个数据导入工具,它接受来自用户的EXCEL文件并解析文件中的数据以将数据导入我的应用程序.
我在使用DeleteRow遇到一个奇怪的问题,我似乎无法在网上找到任何信息,尽管看起来有人会遇到过这个问题.如果这是一个重复的问题,我道歉,但是在搜索网页后我找不到与我的问题相关的任何内容,除了这个仍然没有解决我的问题.
所以问题:
我使用以下代码尝试通过ExcelPackage"删除"具有空白数据的任何行.
for (int rowNum = 1; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var rowCells = from cell in ws.Cells
where (cell.Start.Row == rowNum)
select cell;
if (rowCells.Any(cell => cell.Value != null))
{
nonEmptyRowsInFile += 1;
continue;
}
else ws.DeleteRow(rowNum);
//Update: ws.DeleteRow(rowNum, 1, true) also does not affect dimension
}
Run Code Online (Sandbox Code Playgroud)
单步执行该代码,我可以看到DeleteRow确实被调用了正确的行号,但问题是当我在返回的结果对象上设置"文件中的总行数"时:
parseResult.RowsFoundInFile = (ws.Dimension.End.Row);
Run Code Online (Sandbox Code Playgroud)
即使在调用DeleteRow之后,ws.Dimension.End.Row仍将返回原始行计数.
我的问题是......我是否必须"保存"工作表或调用某些内容才能使工作表意识到这些行已被删除?如果行仍然"存在",调用"DeleteRow"有什么意义?任何有关这方面的见解将不胜感激......
谢谢
我正在尝试为 Google Hangouts 中的自动拨号编写一个 chrome 扩展,这样我就不必为每次会议输入我的会议桥号码。也能保存它们会很好……无论如何,我的概念有点工作,但我正在尝试解决跨域问题。
在 Google Hangouts 中拨打电话时,您会从联系人页面开始,然后输入要拨打的号码。当您按 Enter 键或单击“拨打电话”时,拨号程序将加载到 iFrame 中。在我的 chrome 扩展中,我能够获得对 iFrame 的引用,但是 Frame 位于域“plus.google.com”下,并且我的脚本正在从“hangouts.google.com”访问。
我知道它们都在 google.com 父域下,所以我试图允许我的 chrome 扩展访问框架,以便在框架的 contentWindow 中的拨号器按钮上执行 .click() 。
在 chrome 扩展的内容脚本中,我从父页面中选择 iframe 元素并将其设置为名为 iframe 的变量。
var iframe = $("div iframe")[0];
Run Code Online (Sandbox Code Playgroud)
我可以设置
document.domain = "google.com";
Run Code Online (Sandbox Code Playgroud)
没有问题,但是当我尝试做
iframe.contentWindow.document.domain = "google.com";
Run Code Online (Sandbox Code Playgroud)
我得到
content.js:3 Uncaught SecurityError: Blocked a frame with origin
"https://hangouts.google.com" from accessing a frame with origin
"https://plus.google.com". The frame requesting access set "document.domain" to
"google.com", but the frame being accessed did …Run Code Online (Sandbox Code Playgroud)