【问题标题】:How to get csvHelper to write csv as text如何让 csvHelper 将 csv 写入文本
【发布时间】:2017-09-21 01:44:16
【问题描述】:

我有以下代码

using (StreamWriter streamwriter = new StreamWriter(savetopath))
{
    using (CsvWriter csv = new CsvWriter(streamwriter))
    {
        List<string> columns = new List<string>();
        foreach (DataColumn column in shopifyDatatable.Columns)
            csv.WriteField(column.ColumnName.ToString());

        csv.NextRecord();

        foreach (DataRow row in shopifyDatatable.Rows)
        {
            for (var i = 0; i < shopifyDatatable.Columns.Count; i++)
            {
                csv.WriteField(row[i].ToString());
            }
            csv.NextRecord();
        }
    }
}

一切正常,但 017825892588 等字段最终为 17825892588。

谁能帮我解决这个问题?

【问题讨论】:

  • 你用过调试器吗..?
  • 你的数据库和DataTable中的列是什么类型的?
  • 所有列都是字符串类型
  • 那么有什么问题.. 017825892588 ends up as 17825892588 有或没有零值仍然相同
  • 在数学上,是的!但是当它用作 upc 或项目 id 时,它根本不一样,这是我的问题,保存的 csv 删除了前导 0

标签: c# csvhelper csv-write-stream


【解决方案1】:

在我的机器上工作。满员MCVE

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using CsvHelper;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string savetopath = @"C:\Users\myusername\Desktop\test.csv";
            DataTable table = new DataTable();
            table.Columns.Add("Column A", typeof(string));
            table.Rows.Add("056");

            using (StreamWriter streamwriter = new StreamWriter(savetopath))
            {
                using (CsvWriter csv = new CsvWriter(streamwriter))
                {
                    List<string> columns = new List<string>();
                    foreach (DataColumn column in table.Columns)
                        csv.WriteField(column.ColumnName.ToString());

                    csv.NextRecord();

                    foreach (DataRow row in table.Rows)
                    {
                        for (var i = 0; i < table.Columns.Count; i++)
                        {
                            csv.WriteField(row[i].ToString());
                        }
                        csv.NextRecord();
                    }
                }
            }

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey(true);
        }
    }
}

输出:

Column A
056

【讨论】:

  • 我刚刚测试了它以明确 typeof(string): DataTable table = new DataTable(); table.Columns.Add("upc", typeof(string)); table.Columns.Add("sku", typeof(string)); table.Rows.Add("056"); table.Rows.Add("017036645273");等待新 ShopifyUtilities().CsvWriter(table, Path.Combine(csvDirectory.FullName, "test.csv"));但如果没有前导 0,结果还是一样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
相关资源
最近更新 更多