以下是我正在执行的检查行为的步骤:
1# 创建一个 Excel(xlsx) 文件,将 1234.56789 放在一个单元格中,保存它。
2#解压.xlsx文件,查看sheet1.xml和styles.xml文件。
在 xl/worksheets/Sheet1.xml 中,您将看到以下内容:
<sheetData><row r="1" spans="1:1" x14ac:dyDescent="0.25"><c r="A1" s="1"
<v>25778.567889999998</v>
</c></row></sheetData>
Run Code Online (Sandbox Code Playgroud)
Styles.xml 中没有关于原始数字精度的信息,即1234.56789.
当我们在 MS Excel 中打开 Excel 时,它如何显示原始值?
尽管提取的文件中没有信息,它如何重建原始数字?
请注意,我没有更改单元格格式类型或任何内容,因此单元格格式为 General。
我知道因为 Excel 将数字存储为浮点数,所以它无法将值保存到完美的精度,我无法理解的是当我在 MS Excel 中打开它时它如何保留原始值。我正面临一个关于使用 OpenXML SDK 读取 Excel 文件的问题,但在询问该问题之前,我正在寻找这个更基本问题的答案。
这是我尝试访问文件的方式-
我在单元测试项目中添加了一个文件夹“ TestData”
通过添加->现有项目添加了一个文件。设置构建操作=无,复制到输出目录=总是复制
通过以下单元测试方法访问文件-
string fileName = System.IO.Path.Combine(
System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location), "TestData\\TestExcel2007File1.xlsx");
XmlDocument actual;
actual.Load(fileName); //Throws exception saying cannot find part of the file path
Run Code Online (Sandbox Code Playgroud)
我也尝试将Method属性用作-
[TestMethod, DeploymentItem(@"Test Data\", @"Test Data\")]
Run Code Online (Sandbox Code Playgroud)
似乎没有任何工作。
生成的文件路径是
"D:\\MyProject\\TestResults\\MACHINE_NAME 2015-01-23 05_21_45\\Out\\TestData\\TestExcel2007File1.xlsx"
Run Code Online (Sandbox Code Playgroud)
并且Out文件夹没有TestData文件夹或Excel文件。
编辑:我引用的程序集存在于Out文件夹中。我正在使用Visual Studio 2010。
我在Visual Studio 2012的另一个项目中执行了相同的步骤,似乎可以找到该文件并按预期工作。
编辑2:我发现TestData文件夹复制到bin \ debug文件夹中,而不是在生成的路径中。但是引用的程序集将复制到生成的路径中!
编辑3:添加了一个测试设置文件并选中了“启用部署菜单”,在“其他文件和要部署的目录”列表中添加了TestData文件夹,但仍然无法使用。
我正在使用Visual Studio Unit test fwk为C#项目编写单元测试,并发现使用[TestMethod]或[TestMethod() ] - 任何属性都可以正常工作.他们之间有什么区别?
我使用相同的密码和盐,但每次运行PasswordDerivedBytes时它都会生成不同的密钥.但是,如果我使用Sha1,它每次都会产生相同的密钥.这是为什么?
如果我使用相同的密码,salt,initvector组合,知道它使用HMACSha1,为什么Rfc2898DerivedBytes每次产生相同的密钥?
以下代码摘要 -
string passPhrase = "passPhrase";
byte[] saltBytes = Encoding.ASCII.GetBytes("saltValue");
int iterations = 2;
int keySize = 32;
string hashAlgo = "HMACSHA1";
Rfc2898DeriveBytes derivedBytes = new Rfc2898DeriveBytes(passPhrase, saltBytes, iterations);
byte[] keyBytes = derivedBytes.GetBytes(keySize);
PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, saltBytes, hashAlgo, iterations);
byte[] keyBytes2 = password.GetBytes(keySize);
Run Code Online (Sandbox Code Playgroud)