使用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) 我是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这个问题- 解决运行时参数而不必传递容器,它似乎接近我需要的东西,但需要更多关于完成此任务的最佳方法的反馈.
我有一个场景,我想显示所选项目的列表,但所选项目应该能够选择两次相同的值.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控件实现了这个.