【问题标题】:Write csv file with color code用颜色代码编写 csv 文件
【发布时间】:2012-08-22 04:57:11
【问题描述】:

我正在从 Datatable 写入 csv 文件。在下面检查我的代码

      public static void SaveDataTableToCsvFile(string AbsolutePathAndFileName, DataTable TheDataTable, params string[] Options)
    {
        //variables
        string separator;
        if (Options.Length > 0)
        {
            separator = Options[0];
        }
        else
        {
            separator = ""; //default
        }
        string quote = "";

        FileInfo info = new FileInfo(AbsolutePathAndFileName);

        if (IsFileLocked(info))
        {
            MessageBox.Show("File is in use, please close the file");
            return;
        }
        //create CSV file
        StreamWriter sw = new StreamWriter(AbsolutePathAndFileName);

        //write header line
        int iColCount = TheDataTable.Columns.Count;
        for (int i = 0; i < iColCount; i++)
        {
            sw.Write(TheDataTable.Columns[i]);
            if (i < iColCount - 1)
            {
                sw.Write(separator);
            }
        }
        sw.Write(sw.NewLine);

        //write rows
        foreach (DataRow dr in TheDataTable.Rows)
        {
            for (int i = 0; i < iColCount; i++)
            {
                if (!Convert.IsDBNull(dr[i]))
                {
                    string data = dr[i].ToString();
                    data = data.Replace("\"", "\\\"").Replace(",", " ");
                    sw.Write(quote + data + quote);
                }
                if (i < iColCount - 1)
                {
                    sw.Write(separator);
                }
            }
            sw.Write(sw.NewLine);

        }
        sw.Close();
    }

代码对我有用,但我需要在 csv 的某些单元格中添加颜色代码。

我该怎么做?

【问题讨论】:

标签: c# sql


【解决方案1】:

CSV 是一种纯数据格式,没有任何格式。毕竟是纯文本文件。所以不,没有办法添加颜色。

【讨论】:

  • 为什么?如果他们的问题是“我该怎么做”,我认为“你不能”的答案是一个。
  • @Joey 你确定吗?我不能那样做吗?
  • 是的,我确定。阅读链接的参考,这是事实上的 CSV 标准。您在那里看到有关格式化的任何信息吗?我没有。
【解决方案2】:

您可能希望使用某些外部实用程序输出 .xls(或等效文件)而不是 .csv 或将 csv 转换为 .xls 以实现颜色编码

【讨论】:

  • 我正在尝试并且要复杂得多。
【解决方案3】:

乔伊是绝对正确的。

但如果您的情况允许您输出 XLSX 而不是 CSV,那么 EPPlus 可能是您的解决方案。

例如

using (ExcelPackage ep = new ExcelPackage(AbsolutePathAndFileName))
{
    ExcelWorksheet worksheet = ep.Workbook.Worksheets.Add("Worksheet1");
    worksheet.Cells["A1"].LoadFromDataTable(TheDataTable, true); 
    worksheet.Cells["F4"].BackgroundColor.SetColor(Color.Red);
    ep.Save();
}

【讨论】:

  • 因此,如果您有 4 个数据表并且需要将它们全部添加到一个工作表中,其中 2 行将 4 个数据表中的每一个分隔开,EPPlus 仍然会处理这个问题,我注意到 .Save() 我是习惯使用Response.Headers 导出并允许用户从网络保存或打开excel EPPlus 是否支持他的..?
【解决方案4】:

CSV(逗号分隔值)文件是一个文本文件。如果不将其更改为另一种文件格式(例如 RTF),则无法为文件添加颜色。

【讨论】:

  • RTF 是一种完全不同的格式,但它表示富文本而不是表格数据。
猜你喜欢
  • 2021-04-04
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 2016-02-01
  • 2021-10-02
  • 2021-07-11
相关资源
最近更新 更多