小编Pau*_*uer的帖子

如何将ClosedXML中的货币格式化为数字

我们使用ClosedXML将数据表对象转换为Excel电子表格,以便呈现给用户.只需将所有数据库值(来自NHibernate)分配给字符串然后按如下方式格式化它们即可构建DataTable对象:

  //formatting
EstimatedCost = Currency.SafeToString(Currency.Create(n.EstimatedCost)),
Run Code Online (Sandbox Code Playgroud)

然后,我们将列类型设置为属性类型,即在所有情况下都为String.

在输出Excel工作表中会发生什么,因为该列设置为货币但具有数字作为文本警告,然后它将无法正确排序.

我的问题是,因为我们将所有数据构建到DataTable中,所以我没有机会正确地装饰ClosedXML列.有没有一种快速的方法可以做到这一点,我没想到?

public const string ExcelDataType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml";

public static MemoryStream GenerateExcelFileFromData(IEnumerable<KeyValuePair<string, DataTable>> tabs, int colWidth = 100)
{
  var workbook = new XLWorkbook { ColumnWidth = colWidth };
  foreach (var enumerable in tabs)
  {
    workbook.Worksheets.Add(enumerable.Value, enumerable.Key);
  }
Run Code Online (Sandbox Code Playgroud)

...

 public static DataTable ConvertToDataTable<T>(IEnumerable<T> varlist, List<string> excludedColumns, bool titleizeColumn = false)
 {
   var dtReturn = new DataTable();

   // column names 
   PropertyInfo[] oProps = null;

   if (varlist == null) return dtReturn;

    foreach (T rec in varlist) …
Run Code Online (Sandbox Code Playgroud)

c# excel

8
推荐指数
1
解决办法
8923
查看次数

Visual Studio不会为DotNet Core Console App发布appsettings.json文件

我正在构建一个DotNet Core控制台应用程序。我注意到,当我将应用程序发布到文件系统时,输出文件中不包含appsettings.json文件。

我发现更改appsettings上的copy选项可以使其出现,但默认情况下不是。

不应将应用程序设置作为单独的文件包含在控制台应用程序中,以便您可以即时配置应用程序吗?

console-application .net-core

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

Azure BlobStorage 类型帐户与 StorageV2 帐户有何不同?

在我的 Azure 订阅中,我使用了 BlobStorage 类型的存储帐户和一些表示 Storage 或 StorageV2 的存储帐户...

我知道我的 BlobStorage 类型不支持表、文件等容器的区别。

但是,我还应该注意其他差异吗?StorageV2 比仅 Blob 存储更快吗?

azure azure-blob-storage

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

编写具有良好C#语法的简单布尔方法的最佳方法

嘿所有,我似乎到处都有这些类型的方法.

下面的方法想要做这些简单的任务:

  1. 打开数据库连接(IntLMPDB对象)
  2. 从一个小的DB表中读取一个简单的记录(DB表是用字符串键入的,因为每个字符串都是方法的名称,所以我只希望表中每行一行),其余部分是一系列时间戳告诉我什么时候开心.
  3. 如果找不到记录,则返回异常,因为没有什么可以做的.
  4. 如果您找到记录,请查看第二个日期,如果它只是缺失,那么设置为true,因为这是第一次运行.
  5. 或者最后得到肉,如果第一个日期大于第二个设置为True,因为它已经更新并且是时候运行了.否则,设置为False,因为还没有更新.

所以这里是代码......我想要做的就是将这一点削减到最好和最快的方式来完成这些检查.我不关心数据库连接问题或类似的问题.

    private static bool isLastIntervalNewerThanDB(string muiMethod)
    {
       using (var db = new IntLMPDB())
        {
            // Try to load a matching record.
            LastIntervalUpdated liRec = db.LastIntervalUpdateds.FirstOrDefault(rec => rec.method == muiMethod);
            // If it could not be loaded, exit because there's no way to determine if we should run.
             if (liRec == null) { throw new Exception(string.Format("Could NOT find LastIntervalUpdated record for muiMethod: {0}", muiMethod)); }
            else
            {
                // we have a valid interval record, …
Run Code Online (Sandbox Code Playgroud)

c# if-statement

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

可以在现有的 ASPNET.Core Web 项目中调用和/或使用 Worker Service 吗?

我一直在阅读和学习 .Net Core 3.0 中提供的新 Worker Service 功能。我一直在使用 Microsoft 的此链接:后台任务与 ASP.NET Core 中的托管服务

我不明白的是,这些工作服务概念可以引入到现有的 ASPNET Web 项目中,例如 Razor Pages 站点吗?或者您必须创建一个新项目,然后使用主机操作系统为此提供的任何机制将该项目部署为服务?

backgroundworker .net-core asp.net-core

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

C#可以将这些格式错误的月/年标记转换为一组日期时间对象吗?

在这种情况下,我有以下下拉列表拍卖实例,但没有标准来命名它们: <select name="marketId" onchange="javascript:reload()"><option value="27" selected="selected">Jul08Auc</option> <option value="61">Sep08Auc</option> <option value="623">Dec10Auc</option> <option value="743">Apr11Auc</option> <option value="66">Oct08Auc</option> <option value="81">Nov08Auc</option> <option value="287">October 2009</option> <option value="703">Mar11Auc</option> <option value="222">Jun09Auc</option> <option value="383">Mar10Auc</option> <option value="423">Apr10Auc</option> <option value="523">August 2010</option> <option value="21">Jun08Auc</option> <option value="105">Jan09Auc</option> <option value="142">March 2009</option> <option value="202">May 2009</option> <option value="303">November 2009</option> <option value="449">May10Auc</option> <option value="463">June 2010</option> <option value="503">July 2010</option> <option value="663">Jan11Auc</option> <option value="763">May11Auc</option> <option value="122">Feb09Auc</option> <option value="282">September 2009</option> <option value="41">Aug08Auc</option> <option value="543">September 2010</option> <option value="603">Nov10Auc</option> <option value="247">July 2009</option> <option value="346">Jan10Auc</option> <option value="363">Feb10</option> <option value="683">Feb11Auc</option> <option value="583">Oct10Auc</option> <option value="101">Dec08Auc</option> …

c# datetime drop-down-menu

0
推荐指数
1
解决办法
1238
查看次数