小编mag*_*guy的帖子

C#Open XML 2.0 NumberFormatId范围

使用c#处理Open XML 2.0以解析大型Excel文件.问题我遇到的是我正在解析的单元格没有DataType I然后检查NumberFormatId以确定它是十进制,数字还是日期.我正在寻找数字/小数与日期的确切NumberFormatId范围.他们似乎到处都是一些数字/小数的格式为189,212,214,305,日期的值为185,194,278等.有谁知道规范是否定义了这些范围?

编辑 - 更多信息

下面是xl文件夹中style.xml文件的数字格式194的示例.

excel表来自世界不同地区,所以我认为数字格式不同,但它们是否重叠?numFmtId 194将不同于不同文化设置的日期吗?

下面是我如何将像"40574"这样的c.CellValues转换为日期,但问题是如何知道"40574"是日期而不是数字?

 DateTime.FromOADate(Convert.ToDouble(c.CellValue.Text));
Run Code Online (Sandbox Code Playgroud)

目前我通过检查是否没有DataType而不是检查CellFormat来做这个,但是当我的检查中没有一些NumberFormatId时会出现问题.

    private Object FormatCellValue(Cell c, SharedStringTable ssTable, CellFormats cellFormats)
            {
                if (c.CellValue != null)
                {
                    // If there is no data type, this must be a string that has been formatted as a number
                    if (c.DataType == null)
                    {
                        CellFormat cf;
                        if (c.StyleIndex == null)
                        {
                            cf = cellFormats.Descendants<CellFormat>().ElementAt<CellFormat>(0);
                        }
                        else
                        {
                            cf = cellFormats.Descendants<CellFormat>().ElementAt<CellFormat>(Convert.ToInt32(c.StyleIndex.Value));
                        }


                        if ((cf.NumberFormatId >= 14 && cf.NumberFormatId <= 22) ||
                            (cf.NumberFormatId >= 165 …
Run Code Online (Sandbox Code Playgroud)

c# openxml openxml-sdk

16
推荐指数
1
解决办法
3万
查看次数

Autofac运行时参数

我是autofac的新手,希望看到将运行时值传递给构造函数的最佳实践.我已经阅读了一堆stackoverflow问题,但是没有一个完全充实.我们应该使用代表,工厂来创建服务等.我知道传递容器并不是实现这一目标的最佳方法.

在我的特定情况下,我有一个访问多个依赖项的服务,比如日志记录,数据提供者等.除了传递的少量服务之外,我还需要捕获运行时参数,比如userid,password.SomeService需要用户标识和密码,并在Web查看器执行特定操作时查找.以下是我的问题,并强调了问题.

public class SomeService : ISomeService
{
    private readonly IDataProvider _dataProvider;
    private readonly ILog _log;
    private readonly string _username;  
    private readonly string _password;

    public SomeService(IDataProvider dataProvider, ILog log,
        string username, string password)
    {
      _dataProvider = dataProvider;
      _log = log;
      _username = username;
      _password = password;
    }
}
Run Code Online (Sandbox Code Playgroud)

数据提供者和日志在autofac中配置

builder.RegisterType<DataProviderService>().As<IDataProvider>()
builder.RegisterType<SomeLogService>().As<ILog>()
Run Code Online (Sandbox Code Playgroud)

这个"SomeService"的大多数功能都需要用户名和密码才能在执行任务之前进行验证,因此最好在创建时传递给构造函数,但从未处理过autofac的运行时要求.我已经回顾了Autofac这个问题- 解决运行时参数而不必传递容器,它似乎接近我需要的东西,但需要更多关于完成此任务的最佳方法的反馈.

c# ioc-container inversion-of-control autofac

6
推荐指数
2
解决办法
2902
查看次数

选择2控制,允许多次选择相同的值

我有一个场景,我想显示所选项目的列表,但所选项目应该能够选择两次相同的值.select2控件不允许多次选择相同的项目.

例:

Options: Wheel, Door
Results: Wheel, Wheel, Wheel, Wheel, Door, Door
Run Code Online (Sandbox Code Playgroud)

我希望能够选择4轮和2门.因此,总共将选择六个项目.然后我系统的后端将确定如何保存这六个项目.我真的只想将select2用于UI部分.我理解本机选择html允许多个选择但不能选择相同的值两次.我正在寻找一个UI组件来处理这个问题.我可以有两个select2控件来选择项目,然后将结果发送到另一个文本框,但是看看是否有人使用了很棒的select2控件实现了这个.

jquery jquery-ui jquery-select2

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