为什么我不能从'System.IO.StreamWriter'转换到'CsvHelper.ISerializer'?
试图将人们的内容写入csvfile,然后导出它,但是我会遇到构建错误及其失败.错误是: cannot convert from 'System.IO.StreamWriter' to 'CsvHelper.ISerializer' 不确定为什么会发生这种情况,除非我确定我已经这样做了很多时间. private void ExportAsCSV() { using (var memoryStream = new MemoryStream()) { using (var writer = new StreamWriter(memoryStream)) { using (var csv = new CsvHelper.CsvWriter(writer)) { csv.WriteRecords(people); }
2 2024-01-08
编程技术问答社区
CsvHelper试图在csv中导出一个包含另一个列表。
我在.NET框架中使用CSVHelper实现Web API来导出CSV. 我有类 public class StudentInfo { public Student Student {get;set;} public Courses[] Courses { get; set; } } public class Student { public string Id {get;set;} public string Name{ get; set; } } public class Course { public string CourseId {get;set;} public string CourseName{ get; set; } } 我有一种返回列表的方法 public List FetchStudentInfo() { //bla bla } 现在,我想使用CSVHelp
2 2024-01-07
编程技术问答社区
加载到数据表时,NullValues选项不起作用
将CSV读取到数据表中时,我正在尝试添加似乎无法正常工作的布尔值和无效值的选项.例如,包含类似数据的文件: Id,MaxDiscount,Name,Active,AltId 1,,Foo,1,ABC123 2,10,Bar,0,DEF345 和以下逻辑使用模式文件动态获取我们期望的标题和数据类型: var dt = new DataTable(); using (var reader = new StreamReader(file.FullName)) using (var csv = new CsvReader(reader)) { csv.Configuration.HasHeaderRecord = true; csv.Configuration.IgnoreQuotes = false; csv.Configuration.TypeConverterOptionsCache.GetOptions().NullValues.Add(
4 2024-01-06
编程技术问答社区
读取CSV记录时,如何将空字符串转换为空?
我正在读取CSV文件,并根据CSV文件的标题动态创建数据库表. 但是,在阅读CSV数据并将其倒入相关表时会遇到问题.当我有一个带有十进制数据类型的列,而CSV字段包含空白时,问题就来了,因此将其视为字符串并低于错误. 错误: 无法将参数值从字符串转换为十进制. 我正在使用这是我发现的1个答案,在类图的情况下可能会有所帮助: 样本记录: SQLBULK复制试图将这些数据转储到SQL Server数据库表中时会发生问题. 解决方案 我认为您可能需要进行列映射.如果您使用的是sqlbulkcopy,则可以使用本文中描述的一些内容: 映射列使用SQLBULKCOPY 数据词
12 2024-01-06
编程技术问答社区
在c#中使用CsvHelper将csv解析为不同文化的小数点
csvhelper在C#中解析小数的问题. 我创建了一个从byte [] iStead获取CSV文件的类,并且它正常工作. public static List GetAll(byte[] attachmentBytes) { using (Stream stream = new MemoryStream(attachmentBytes)) { using (var reader = new StreamReader(stream, Encoding.GetEncoding(1252), true)) { using (var csv = new CsvReader(reader)) { csv.Configuration.Delimiter = ";";
2 2024-01-05
编程技术问答社区
在使用CsvHelper, CsvReader.Read()时,如何忽略空白处?
使用csvhelper库,尤其是CsvReader.Read()函数时,是否可以忽略空白记录和/或whitespace? 我需要返回原始string[],但希望在与图书馆解析时可以执行一些清理功能. 我已经检查了github,CsvReader.Read()似乎使用了 skipemptyrecords ,但这对我来说是不起作用的. 这是我的CSV文件,它在没有BOM的UTF8中编码. 我尝试了ASCII编码,以防万一我错过了一些东西,但这也没有用. 如果没有人知道我会与Josh聊天,并提交带有修复程序的Git请求. 参考: 解决方案 我认为您最好的选择是自己修复图书馆. 问题是Read方法使用SkipEmptyRecords设置和IsRecordEmpty方法来确定它是否应该跳过字段: while (this.configuration.SkipEmptyRecords && this.IsRecordEmpty(false)); 但是,
4 2024-01-05
编程技术问答社区
如何将CsvHelper记录添加到DataTable中,用于SqlBulkCopy到数据库中。
我正在尝试读取带有CSVHelper的CSV文件,将每个记录加载到数据表中,然后使用sqlbulkcopy将数据插入数据库表中.使用当前代码,将一行添加到数据表中时会得到例外.例外是:"无法施放类型的对象'mvcstockanalysis.models.stockprice'tote'system.iconvertible'.不得存储在日期列中.预期类型是日期时间." ." 示例CSV文件来自Yahoo Finance.例如: CSV文件包含以下标头: 日期打开高低关闭体积关闭 我正在阅读CSV文件的模型: namespace MvcStockAnalysis.Models { using System; using System.Collections.Generic; public partial class StockPrice { public int Id { get; set; } publ
4 2024-01-05
编程技术问答社区
使用CsvHelper可以将空白处翻译成nullable吗?
我有一些我需要解析的真正la脚的CSV文件.我正在使用csvhelper,它运行效果很棒.除了我有一些线条的线,在正常情况下我有双重. 文件: 文本,某天,moretext "好",1.23,"好" "糟糕","糟糕" 如果我尝试将其映射到 中 public class Test { [CsvField(Name = "Text")] public string Text { get; set; } [CsvField(Name = "SomeDouble")] public double? SomeDouble{ get; set; } [CsvField(Name = "MoreText")] public string MoreText{ get; set; } } 然后我得到这样的错误: csvhelper.csvreaderexception:试图读取一个错误 类型的记录 row:'2'(基于1)
6 2024-01-04
编程技术问答社区
写入大量数据到流中失败了
当我试图使用数据类相当大,具有约30个属性,因此,文件中的每个记录都有〜30列. 这是例外抛出的实际写作代码(按照此代码为基于 作者): using (var memoryStream = new MemoryStream()) { using (var streamWriter = new StreamWriter(memoryStream, encoding ?? Encoding.ASCII)) { var csvWriter = new CsvWriter(streamWriter, GetConfiguration(delimiter, mappingClassType, mappingActions)); csvWriter.WriteRecords(data); //data is IEnumerable and has more than 300k records streamWriter
4 2024-01-03
编程技术问答社区
使用CsvHelper编写页眉?C#
我正在使用csvhelper.要写入.csv文件,我需要一个基于类的标题. 我手动编写标题,它有效,但是我需要在阅读时自动完成. 我可以找到使用此表达式的所有文档,writer.WriteHeader();,但这是不起作用的,因为它需要更多的工作. 这是标题应基于的类: public class CSVDataFormat { public string FirstName { get; set; } public string LastName { get; set; } public float Wage { get; set; } } 这是阅读和写作的代码: private void ReadCSV(string ogCsvFile) { using (var streamReaederfileDir = new StreamReader(@ogCsvFile))
8 2024-01-03
编程技术问答社区
使用CSVHelper向浏览器输出数据流
我正在尝试使用CSVHelper生成CSV文件并将其发送回浏览器,以便用户可以选择保存位置和文件名并保存数据. 该网站是基于MVC的.这里'我正在使用的jQuery按钮代码进行调用(数据是DTO列表的一些序列化JSON表示): $.ajax({ type: "POST", url: unity.baseUrl + "common/ExportPayments", data: data }); 这是控制器代码: [HttpPost] public FileStreamResult ExportPayments() { MemoryStream ms = new MemoryStream(); StreamWriter sw = new StreamWriter(ms); CsvWriter writer = new CsvWriter
4 2024-01-03
编程技术问答社区
CsvHelper改变日期和时间的输出方式
我正在使用 csvhelper 编写一些CSV文件,并想更改我的日期和日期的形式特定的时间.遵循 https://stackoverflow.com/a/31817621/223742 我可以成功为每个人创建地图,课程. 但是,它具有独特的缺点,我现在需要为我要导出的所有类创建自定义地图.由于我一直希望所有的领域出口,这成为一场维护噩梦,因为我每次都必须修改地图. 因此,是否有任何简单的方法告诉CSVHelper使用特定格式写所有日期和时间? 解决方案 您可以使用TypeConverterOptionsFactory. void Main() { using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var csv
30 2024-01-02
编程技术问答社区
使用csvHelper动态创建列
我有一个从服务器获取各种字段的工人.我正在使用CSVHelper软件包将此类转换为Excel表. 工人的字段如下: class Worker { string name; string phone; string age; Dictionary customerField; } 我可以映射名称,电话,号码 class WorkerMap : CsvClassMap { public WorkerMap() { Map(m => m.name); Map(m => m.phone); Map(m => m.age); } } ,我生成了地图: csv.Configuration.RegisterClassMap(); 写下工人列表: csv.WriteRecords(workerLi
2 2023-12-16
编程技术问答社区
写入数据到CSV时如何排除标题
我正在将数据从public class写入CSV文件.当我想附加数据时,我想排除标头的导入,而仅从类中导入数据.我下面的代码导入标题和数据.希望得到帮助.谢谢. record.cs-我的班级 public class Record { public string Name { get; set; } public DateTime DateOfBirth { get; set; } } form1.cs-我的形式 public partial class Form1 : Form { private List records; public Form1() { InitializeComponent(); records = new List(); } private void
8 2023-12-09
编程技术问答社区
Azure Web Jobs无法正确读取csv文件
我正在使用最新版本的CSVHelper库,但Azure WebJob使阅读我的CSV文件的麻烦. 它说没有有效的DateTime格式.尽管我的CSV确定为101%,但我的CSV具有正确的日期时间格式. 我相信csvhelper会引起问题,但我真的不知道. 如果需要更多信息,请告诉我. 解决方案 对于此类问题,如果我们没有可以复制该问题的样本,请回答我们很难回答.因此,在这里,我将分享一种有效的方法来自行解决问题. 首先,问题不是由Web作业引起的,因此您应该首先在本地调试. 1,创建一个简单的控制台应用程序进行测试. 2,下载csvhelper库的源代码,在VS中的同一解决方案中添加源项目,然后参考CSVhelper项目如下: 3,在您的测试应用中,输入一些您在Web作业中使用的功能相同功能的代码.以下是我用于演示的方法. Foo类包含DateTime属性: class Program { static void Main(
0 2023-11-29
编程技术问答社区
在C#中,使用"使用"结果在错误中,是否有比不使用"使用"更好的做法?
我有以下方法: [SuppressMessage("Reliability", "CA2000:Dispose objects before losing scope", Justification = "If we dispose of the csvWriter, it won't be available to write.")] public static MemoryStream CreateCsvStream(IEnumerable records) { MemoryStream memoryStream = new(); StreamWriter streamWriter = new(memoryStream); CsvWriter csvWriter = new(streamWriter, CultureInfo.InvariantCulture); csvWri
10 2023-11-11
编程技术问答社区
向CsvHelper添加可检测的Nullable值
我想知道,乔什关闭的csvhelper是否在我缺少的配置中是否有任何东西将值转换为null.我是这个库的忠实拥护者,但我一直认为应该有某种配置,让它知道什么值代表您的文件中的null.一个示例是一个具有" Na","空"," Null"等值在我遇到的文件中,这往往很普遍. 是否有配置设置可以相对容易地执行此操作? 我在csvhelper.typeconversion名称空间中找到了打字机,但不确定在哪里应用类似的内容或正确用法的示例: new NullableConverter(typeof(string)).ConvertFromString(new TypeConverterOptions(), "NA") 我也使用最新版本2.2.2 谢谢! 解决方案 CSVHelper绝对可以处理无效的类型.如果将空白列视为null,则不需要滚动自己的typeconverter.对于我的示例,我假设您正在使用用户定义的流利映射. 您需要做的第一件事是为您的
16 2023-10-01
编程技术问答社区
CsvHelper用引号包住所有值
我正在使用csvhelper,我需要用引号包装所有值. 这可能吗? data =是列表 using (StreamWriter textWriter = new StreamWriter(path)) { textWriter.BaseStream.Write(p, 0, p.Length); // var dt = new DataTable(); var csv = new CsvWriter(textWriter); csv.WriteRecords(Data); textWriter.Flush(); textWriter.Close(); } 谢谢 解决方案 有一个配置值,称为ShouldQuote您可以在字段级别上确定是否应引用. void Main() { var records = new List { new Foo { Id = 1
6 2023-10-01
编程技术问答社区
在一个流中使用CsvHelper
我正在尝试使用CSVHelper在CSV文件中读取并从中创建数据.第一行将是提供列名称的​​标题记录,但是除此之外,文件的结构未知.如果我使用以下代码(以CSVHELPER的作者为例),则可以使用. using (var reader = new StreamReader("path\\to\\file.csv")) using (var csv = new CsvReader(reader)) { // Do any configuration to `CsvReader` before creating CsvDataReader. using (var dr = new CsvDataReader(csv)) { var dt = new DataTable(); dt.Load(dr); } } 但是,如果我将备用构造函数用于流读器,该构造器将流作为参数而不是文件路径使用,则使用"不支持同步
8 2023-10-01
编程技术问答社区
当使用SSH.NET向SFTP服务器上传由csvhelper创建的内容的内存流时,上传的文件是空的。
我正在努力与CSVHelper一起发送CSV.但是当我发送它时,它总是空的. using (var sftProvider =new SFTProvider(Configuration)) using (var csvProvider=new CSVProvider(Configuration)) using (Stream fileStream = new MemoryStream()) { var sftp = sftProvider.SFTPConnection("", "", ""); var nameFile = "/ethias/"+DateTime.Now.ToString(DateFormatConstants.DATE_FORMAT) + ".csv"; if (sftp.Exists(nameFile)) { sftProvider.ReadFileSFTP(sftp, nameFile, fileStream);
10 2023-08-31
编程技术问答社区