gpt4 book ai didi

c# - EPPlus 将 Excel 电子表格列转换为随机负值

转载 作者:太空宇宙 更新时间:2023-11-03 20:29:24 29 4
gpt4 key购买 nike

我有一个 C# 方法,请参见下面的代码,它使用 EPPlus 生成 Excel 电子表格。该方法接受 3 个字符串,其中一个是名为 csv 的竖线分隔字符串,其中包含我的数据。我使用的数据有 14 列,在第 14 列中我有如下数据:103.01.06 或 01.01,或其他一些以句点分隔的数值。我看到的问题是,如果值为 103.01.06,则 EPPlus 会将其转换为值 -656334。有什么办法可以解决这个问题吗?

    private void GenerateSpreadsheet(string id, string csv, string worksheetName)
{
using (ExcelPackage pck = new ExcelPackage())
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add(worksheetName);

ws.Cells["A1"].LoadFromText(csv, new ExcelTextFormat{Delimiter = '|'});

Response.AddHeader("Content-Disposition",
String.Format("attachment; filename={0}.xlsx", id));
Response.ContentType =
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.BinaryWrite(pck.GetAsByteArray());
Response.End();
}
}

最佳答案

它似乎被解释为DateTime,可能是一个bug。

试试这个:

var format = New ExcelTextFormat()
format.Delimiter = '|';
ws.Cells("A1").LoadFromText(csv, format);
var colNumber = 14;
var colRange = ws.Cells(1, colNumber, ws.Dimension.End.Row, colNumber);
colRange.Style.Numberformat.Format = "@";

如果这不起作用,请尝试在 LoadFromText CSV 之前设置格式。

例如:

var csv = IO.File.ReadAllText(csvPath);
var ws = pck.Workbook.Worksheets.Add("Test");
var format As New ExcelTextFormat();
format.Delimiter = '|';
// if columns 4 shall not be interpreted like a DateTime
format.DataTypes = {
null,
null,
null,
eDataTypes.String
};
var range = ws.Cells("A1").LoadFromText(csv, format);

注意:您必须为每一列提供数据类型。但我已经用 null 测试了它,如果你不想指定类型,它似乎可以工作。如果编译不通过,请随意更改(从 VB.NET 手动转换而来)。

关于c# - EPPlus 将 Excel 电子表格列转换为随机负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358966/

29 4 0
文章推荐: matlab - 在matlab中检测不规则线/折线
文章推荐: c# - 指定返回类型
文章推荐: html - 如何将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com