小编Mar*_*eli的帖子

FileHelpers:如何跳过读取固定宽度文本的第一行和最后一行

下面的代码用于使用ASP.NET MVC2中的FileHelpers读取固定宽度的上载文件内容文本文件

第一行和最后一行的长度较小,因此ReadStream会导致异常.所有其他线都有适当的固定宽度.如何跳过第一行和最后一行或其他方式来读取数据无异常?

    [FixedLengthRecord()]
    class Bank
    {
        [FieldFixedLength(4)]
        public string AINETUNNUS;
        [FieldFixedLength(16)]
        public string TEKST1;
        [FieldFixedLength(3)]
        public string opliik;
        [FieldFixedLength(2)]
        public string hinnalis;
    };

    [AcceptVerbs(HttpVerbs.Post)]
    [Authorize]
    public ActionResult LoadStatement(HttpPostedFileBase uploadFile)
    {

        FileHelperEngine engine = new FileHelperEngine(typeof(Bank));
        var res = engine.ReadStream(new StreamReader(uploadFile.InputStream,
             Encoding.GetEncoding(1257))) as Bank[];
  }
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc filehelpers

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

什么是FileHelpers .NET库的最新生产就绪版本,它在哪里?

SourceForge页面 - www.filehelpers.net - 最后一次更新于2007年,没有可用的下载.

Github repo - github.com/MarcosMeli/FileHelpers - 看起来很新,但最后一个标记版本是2.1

有一个NuGet包 - www.nuget.org/packages/FileHelpers-Stable - 但它已经两年了,而且不属于主要开发者Marcos Meli.有一个竞争的NuGet包 - www.nuget.org/packages/FileHelpers - 标记为2.0.0并由Marcos Meli拥有,但该代码已有 6年历史.

TeamCity版本可用.有一个成功的开发版本标记为2.9.16.

我应该将哪一项用于生产就绪项目?或者是其他地方的最新生产版本?

编辑

我从github master克隆了,但它没有构建 - 充满了错误.我经历了在所有子项目上将.NET版本设置为4.5并修复了一些导入并让向导运行,但仍然有几十个警告.所以Github头显然不是生产就绪的版本.

编辑2

现在版本3.1已准备就绪,GitHub存储库是最新的,并使用CI进行连续构建从www.filehelpers.net下载最新版本

.net c# filehelpers

11
推荐指数
1
解决办法
1658
查看次数

在FileHelper中跳过列

使用.Net 的FileHelper库,我可以以某种方式跳过源文件中的多个列吗?

根据文档和示例,我必须为所有列添加字段.唉,我有一个excel表,有216列可以导入,只需要13个.

.net csv filehelpers

8
推荐指数
2
解决办法
3346
查看次数

使用Reflection构建类(构建动态FileHelper类)

我可以使用反射动态构建如下所示的类吗?没有方法,只有公共变量,有些有自定义属性.

是否需要.Emit方法(从我所看到的,"Emit"看起来有点挑战).

我正在使用www.FileHelpers.net上的软件,它需要一堂课.我的所有文件定义都在数据库表中,我想让所有内容更加动态(即当文件中出现新列时,代码不会更改).

[FileHelpers.DelimitedRecord(",")]
public class FileRow
{
    [FileHelpers.FieldQuoted('"', QuoteMode.OptionalForBoth)] 
    public string Borrower_First_Name;
    [FileHelpers.FieldQuoted('"', QuoteMode.OptionalForBoth)] 
    public string Borrower_Last_Name;
    public string Borrower_Email;
}
Run Code Online (Sandbox Code Playgroud)

更新1:根据Vlad的回答我需要引用DLL,这是我如何做到的:

    // need to reference the FileHelpers.dll from our own .exe directory 
    string diskFilenameFileHelpersDLL = 
        System.IO.Path.GetDirectoryName(
           System.Reflection.Assembly.GetExecutingAssembly().Location) + 
           @"\FileHelpers.dll";
Run Code Online (Sandbox Code Playgroud)

更新2:此外,在做了Vlad建议之后,这就是我调用FileHelper并循环结果的方法.我可能会将数据传输到列表中.

    Assembly assembly = compiledResult.CompiledAssembly;

    // Simple Data Test 
    lineContents = "John,Doe,jd123456@yahoo.com";
    FileHelperEngine engine = new FileHelperEngine(assembly.GetType("FileRow"));
    // FileRow[] FileRowArray = (FileRow[])engine.ReadString(lineContents);
    Object[] FileRowArray = engine.ReadString(lineContents);
    Object myObject = FileRowArray[0];  // only 1 row of data in …
Run Code Online (Sandbox Code Playgroud)

c# reflection filehelpers class reflection.emit

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

更改数据库中所有存储过程的ANSI_NULLS设置

我们在ANSI_NULLS设置和计算列方面存在一些问题,我们有大量的存储过程

SET ANSI_NULLS OFF
Run Code Online (Sandbox Code Playgroud)

我们想要将它们全部改为

SET ANSI_NULLS ON
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以做到这一点,或者我必须将所有SP提取到脚本,更改它并再次运行它以删除并重新创建所有SPa

sql-server stored-procedures

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

解析大型csv文件时,FileHelpers会抛出OutOfMemoryException

我正在尝试使用FileHelpers(http://www.filehelpers.net/)解析一个非常大的csv文件.该文件为1GB压缩文件,解压缩约20GB.

        string fileName = @"c:\myfile.csv.gz";
        using (var fileStream = File.OpenRead(fileName))
        {
            using (GZipStream gzipStream = new GZipStream(fileStream, CompressionMode.Decompress, false))
            {
                using (TextReader textReader = new StreamReader(gzipStream))
                {
                    var engine = new FileHelperEngine<CSVItem>();
                    CSVItem[] items = engine.ReadStream(textReader);                        
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

FileHelpers然后抛出OutOfMemoryException.

测试失败:抛出了类型'System.OutOfMemoryException'的异常.System.OutOfMemoryException:抛出了类型'System.OutOfMemoryException'的异常.System.Text.StringBuilder.ExpandByABlock(Int32 minBlockCharCount)在System.Text.StringBuilder.Append(Char值,Int32 repeatCount)的System.Text.StringBuilder.Append(Char值)处于FileHelpers.StringHelper.ExtractQuotedString(LineInfo line,Char在FileHelpers.FileHelperEngine的FileHelpers.RecordInfo.StringToRecord(LineInfo行)的FileHelpers.FieldBase.ExtractValue(LineInfo行)的FileHelpers.DelimitedField.ExtractFieldString(LineInfo行)处的quoteChar,Boolean allowMultiline)1.ReadStream(TextReader reader, Int32 maxRecords, DataTable dt) at FileHelpers.FileHelperEngine.ReadStream(TextReader reader)

是否可以使用FileHelpers解析这么大的文件?如果没有,任何人都可以推荐一种解析文件的方法吗?谢谢.

c# csv filehelpers

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

FileHelpers:如何在读取文件时处理引用的字段

这是我想要阅读的数据:

"Adam C. Emality","1Z620Y1V034826","14.40"
"Ethel Baeron","1Z620Y1V034604","15.19"
"Donna Lidt","1Z620Y1V034650","12.37"
Run Code Online (Sandbox Code Playgroud)

然后在读完数据之后,我想在两个集合上执行一个Join,一个是数组,一个是列表 - 我的代码如下.但是在执行读取文件行之后,我的字符串就像这样存储"\"Adam C. Emality\"" "\"1Z620Y1V034826\"" "\"14.40\""......等等.为什么会发生这种情况?我不想包括",我不知道它为什么要加入\.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FileHelpers;
using Parser;

namespace Amazon_File
{
    class SpreadSheet
    {
        public void create(IEnumerable<SpreadList> list)
        {


            var steamengine = new FileHelperEngine<Records>();
            var records = steamengine.ReadFile(@"C:\Users\Danny\Documents\Visual Studio 2013\Projects\Amazon File\Amazon File\Daniel.csv");

            var spreadlist = from x in list
                             join y in records on x.Name equals y.Name
                             select new { y.Name, y.Track, y.worldPrice, …
Run Code Online (Sandbox Code Playgroud)

c# linq filehelpers readfile

2
推荐指数
1
解决办法
2529
查看次数