我正在尝试编写一个将网页(及其图像)保存为html页面的功能.我正在使用HttpWebRequest来请求网页的内容.我的功能看起来像
void SaveUrl(string sourceURL, string savepath)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(sourceURL);
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream());
string sResponseHTML = responseReader.ReadToEnd();
using (StreamWriter sw = new StreamWriter(savepath, false))
{
sw.Write(sResponseHTML);
}
string[] ImageUrl = GetImgLinks(sResponseHTML);
foreach (string imagelink in ImageUrl)
{
HttpWebRequest imgRequest = (HttpWebRequest)WebRequest.Create(imagelink);
HttpWebResponse imgresponse = (HttpWebResponse)imgRequest.GetResponse();
//Code to save image
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我想在同一个会话中创建所有webrequest并且不想为每个imgRequest创建一个新会话,因为我的网页上的许多图像都是动态生成的并且是临时存储的.因此,如果我在同一会话中发出请求,则只能获取这些图像.
我有一个带有枢轴字段的数据透视表,包含许多项目.我有VBA代码逻辑来决定是否应该显示数据透视值.问题是excel重新计算显示或隐藏的每个字段的数据透视表,这使得它非常慢.在设置了所有值之后,我想要一次只重新计算一次的东西.我尝试使用Application.Calculation = xlCalculationManual,但它没有帮助.
我正在使用的vba代码是这样的
For i = 1 To oPivotField.PivotItems.Count
If (oPivotField.PivotItems(i).Name = "TestCondition") Then
oPivotField.PivotItems(i).Visible = True 'Recalulates pivot table
Else
oPivotField.PivotItems(i).Visible = False 'Recalulates pivot table
End If
Next
Run Code Online (Sandbox Code Playgroud)
我要手动取消选中"全部显示"框并重新检查我想要的字段.这会导致Excel重新计算一次并仅显示我想要的透视项目.我想通过VBA代码做同样的事情.
我甚至尝试过使用
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Run Code Online (Sandbox Code Playgroud)
但没有奏效.
我想创建一个excel添加,在其中创建一些额外的工具栏和菜单按钮.但我希望只在打开特定工作簿时加载此插件.如果任何其他工作簿打开,我不想加载Addin.
我想知道解决这个问题的可能方法是什么,以及实现这个Add in(XLA或VSTO或COM Addin)的最佳方法是什么.
我不希望用户知道我的Addin路径,加载/初始化插件所需的VbA代码.
excel-vba ×2
vba ×2
asp.net ×1
c# ×1
com ×1
excel ×1
excel-2007 ×1
html ×1
pivot-table ×1
vsto ×1