小编Ser*_*hyk的帖子

Html敏捷包.加载和抓取网页

这是抓取时获取网页的最佳方式吗?

HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)oReq.GetResponse();

var doc = new HtmlAgilityPack.HtmlDocument();

doc.Load(resp.GetResponseStream());
var element = doc.GetElementbyId("//start-left");
var element2 = doc.DocumentNode.SelectSingleNode("//body");
string html = doc.DocumentNode.OuterHtml;
Run Code Online (Sandbox Code Playgroud)

我已经看到HtmlWeb().Load了一个网页.这是一个更好的替代加载和刮网页?


好的,我会试试.

HtmlDocument doc = web.Load(url);
Run Code Online (Sandbox Code Playgroud)

现在,当我得到我的doc,并没有得到如此mutch属性.没有人喜欢SelectSingleNode.我唯一可以使用的是GetElementById,但这有效但我想上课.

我需要这样做吗?

var htmlBody = doc.DocumentNode.SelectSingleNode("//body");
htmlBody.SelectSingleNode("//paging");
Run Code Online (Sandbox Code Playgroud)

c# web-scraping html-agility-pack

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

如何使用Epplus获得修改后的excel的实际使用范围?

我正在使用EPPlus从excel读取数据到datable.

在阅读了包含10行记录的Excel工作表后,我通过删除现有数据并仅保留一行数据来修改Excel工作表.但是当我正在读取修改后的excel时,它仍然会将10行(带有值1并保留为空字段)读取到数据表中.

怎么能限制这个?我正在使用以下代码来阅读Excel.

using (var pck = new OfficeOpenXml.ExcelPackage())
{
    using (var stream = File.OpenRead(FilePath))
    {
        pck.Load(stream);
    }
    var ws = pck.Workbook.Worksheets.First();                   
    bool hasHeader = true; // adjust it accordingly(this is a simple approach)
    foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column])
    {
        DSClientTransmittal.Tables[0].Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
    }
    var startRow = hasHeader ? 2 : 1;
    for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
    {
        //var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
        var wsRow = ws.Cells[rowNum, …
Run Code Online (Sandbox Code Playgroud)

c# excel openxml epplus excel-import

14
推荐指数
1
解决办法
6161
查看次数

C#从.DBF文件读入数据表

我需要.dbf使用C#连接到Visual Studio中的文件并填充数据表.有任何想法吗?我目前可以在Visual Fox Pro 9.0中查看表格

代码我尝试过但失败了,继续得到

外部表格不是预期的格式.

private OleDbConnection conn;
private OleDbCommand cmd;
private OleDbDataReader dr;
private string sqlStr = "";
private DataSet myDataSet;
private OleDbDataAdapter myAdapter;


void test2()
{
    conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\PC1\Documents\\Visual FoxPro Projects\\;Extended Properties=DBASE IV;");
    conn.Open();
    sqlStr = "Select * from Clients.dbf";
    //Make a DataSet object
    myDataSet = new DataSet();
    //Using the OleDbDataAdapter execute the query
    myAdapter = new OleDbDataAdapter(sqlStr, conn);
    //Build the Update and Delete SQL Statements
    OleDbCommandBuilder myBuilder = new OleDbCommandBuilder(myAdapter);         

    //Fill …
Run Code Online (Sandbox Code Playgroud)

c# datatable dbf visual-foxpro

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

ClosedXML格式单元格包含公式

我希望有人可以帮助我使用ClosedXML,因为我是Excel新手出口的人,而且从我看到的ClosedXML,文档在某些方面相当有限.

目前我正在将数据放入Datatable,将行格式化为正确的类型并使用正确的布局导出.

当我尝试在每个单元格中导出包含重复公式的一行时,会发生此问题.

我试图将公式简单地添加为一个字符串,然后我可以在文件导出时突出显示并转换,这显然不是理想的.我发现了一个XML类,XLFormula它完全没有文档,但我认为我应该对此做些什么.

目前我已经(注释掉我正在使用的方式XLFormula,试图XLFormula将公式作为字符串传递并设置为每单位的总出价):

dt.Columns.Add("Qty", typeof(int));
dt.Columns.Add("Bid Per Unit GBP", typeof(double));
dt.Columns.Add("Total Bid GBP"); //typeof(XLFormula)
foreach (DataRow dr in dt.Rows)
{
    //XLFormula totalBidFormula = new XLFormula();

    dr["Qty"] = 1;
    dr["Bid Per Unit GBP"] = 0.00;
    dr["Total Bid GBP"] = "=[@Qty]*[@[Bid Per Unit GBP]]";
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.如果我想用ClosedXML做的事情是不可能的,请告诉我,如果你可以建议一个替代的XML导出器(即使它已付费),这将有所帮助!

c# asp.net webforms closedxml

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

MouseHover在鼠标关闭时不会触发

我正在开发一个WordSearch拼图程序(也称为WordFind),你必须在其中找到大量字母中的某些单词.我正在使用C#WinForms.

我的问题是当我想点击并按住1个字母(Label),然后拖到其他字母来改变它们ForeColor.我试过谷歌搜索但无济于事.

这是我有的:

foreach (Letter a in game.GetLetters())
{
     this.Controls.Add(a);
     a.MouseDown += (s, e2) =>
     {
         isDown = true;
         a.ForeColor = Color.Yellow;
     };
     a.MouseUp += (s, e2) =>
     {
         isDown = false;
     };
     a.MouseHover += (s, e2) =>
     {
         if (isDown)
             a.ForeColor = Color.Yellow;
     };
}
Run Code Online (Sandbox Code Playgroud)

但是,除非未按住鼠标,否则MouseHover事件永远不会触发.还没有运气换MouseHoverMouseEnter.所以,我保留了MouseDownMouseUp事件并尝试在表单中使用MouseHover:

private void frmMain_MouseHover(object sender, MouseEventArgs e)
{
    if (isDown)
    {
        foreach (Letter l in game.GetLetters())
           if (l.ClientRectangle.Contains(l.PointToClient(Control.MousePosition)))
               l.ForeColor = Color.Purple;
    } …
Run Code Online (Sandbox Code Playgroud)

c# winforms mousehover

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

如何转到Novacode Docx的下一页

我在C#中使用Novacode DocX.使用方法InsertSectionPageBreak().但它不保存默认页面的参数.例如,页面应采用横向格式.使用InsertSectionPageBreak()格式更改书籍时.我需要每个表都在横向格式的每个页面上.

using (DocX doc = DocX.Create(fileName))
{
     doc.PageLayout.Orientation = Orientation.Landscape;
     var table = doc.AddTable(12, 2); 
     doc.InsertTable(table);
     doc.InsertSectionPageBreak();                           
}
Run Code Online (Sandbox Code Playgroud)

c# novacode-docx

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

在字符串中查找两个值之间的单词

我有一个txt文件作为字符串,我需要找到两个字符和Ltrim/或Rtrim其他所有字之间的单词.它可能必须是有条件的,因为两个字符可能会根据字符串而改变.

例:

car= (data between here I want) ;
car =  (data between here I want) </value>
Run Code Online (Sandbox Code Playgroud)

码:

int pos = st.LastIndexOf("car=", StringComparison.OrdinalIgnoreCase);

if (pos >= 0)
{
     server = st.Substring(0, pos);..............
}
Run Code Online (Sandbox Code Playgroud)

.net c# string substring indexof

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

使用FileHelpers填充零

我正在使用FileHelpers来创建NACHA文件.以下示例

许多属性都是带前导零的数字,因此它们已被定义为字符串.是否有一个属性可以填充Class属性中的前导零,类似于FieldTrim/TrimMode删除空格的方式?

[FixedLengthRecord()]
public class FileControlRecord
{
    [FieldFixedLength(1)]
    public int RecordTypeCode = 9; //Constant

    [FieldFixedLength(6)]
    public string BatchCount; //Numeric

    [FieldFixedLength(6)]
    public string BlockCount; //Numeric

    [FieldFixedLength(8)]
    public string EntryAddendaCount; //Numeric

    [FieldFixedLength(10)]
    public string EntryHash; //Numeric

    [FieldFixedLength(12)]
    public string TotalDebit; //$$$$$$$$$$cc

    [FieldFixedLength(12)]
    public string TotalCredit; //$$$$$$$$$$cc

    [FieldFixedLength(39)]
    [FieldNotInFile]
    public string RESERVED; //Blank
}
Run Code Online (Sandbox Code Playgroud)

c# filehelpers leading-zero

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

ASP.NET Identity 3.0上IIdentityMessageService的等价物是什么?

在ASP.NET Identity 2.X上,我们可以配置一个通知基础架构,尽管库中IIdentityMessageService提供的接口Microsoft.AspNet.Identity.Core尚未升级到3.0版.

在ASP.NET Identity 3.0上配置消息传递基础结构的做法是什么?

c# asp.net-identity asp.net-identity-3

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

将纳秒转换为日期时间

我在将纳秒转换为时遇到了一些麻烦,DateTime因此我可以使用 Google Fit API ( https://developers.google.com/fit/rest/v1/reference/users/dataSources/datasets/get )

数据集标识符是最小数据点开始时间和最大数据点结束时间的组合,表示为从纪元开始的纳秒。ID 的格式如下:“startTime-endTime”,其中 startTime 和 endTime 是 64 位整数。

我能够以这种方式从日期时间转换为纳秒

DateTime zuluTime = ssDatetime.ToUniversalTime();
DateTime unixEpoch = new DateTime(1970, 1, 1);
ssNanoSeconds = (Int32)(zuluTime.Subtract(unixEpoch)).TotalSeconds + "000000000";
Run Code Online (Sandbox Code Playgroud)

但现在我需要将纳秒转换为DateTime. 我该怎么做?

c# datetime google-fit-sdk google-fit

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