OleDB Jet - 阅读excel数据时的Float问题
当我使用OleDbDataReader将一个工作表读入一个DataTable时,浮点数字会降低其精度。OleDB Jet - 阅读excel数据时的Float问题
我试图迫使OleDb读取excel数据作为字符串,但是虽然数据现在包含在DataRow中,每个Column都定义为System.String,但它失去了精度(18.125 - > 18.124962832)。
任何想法如何避免这种行为?
从下面的代码的输出显示了如何获得潜在数量和格式化文本与:
下面是从代码的输出:
x=18.124962832 y=18.124962832 formattedText=18.125
下面是代码:
namespace Program
{
class Program
{
static void Main(string[] args)
{
// Create a new workbook and get a reference to Sheet1!A1.
var workbook = SpreadsheetGear.Factory.GetWorkbook();
var sheet1 = workbook.Worksheets[0];
var a1 = workbook.Worksheets[0].Cells["A1"];
// Put the number in the cell.
double x = 18.124962832;
a1.Value = x;
a1.NumberFormat = "0.000";
double y = (double)a1.Value;
string formattedText = a1.Text;
System.Console.WriteLine("x={0} y={1} formattedText={2}", x, y, formattedText);
}
}
}
你可以看到现场的SpreadsheetGear样品here并下载免费试用版here。
声明:我自己的SpreadsheetGear LLC
然而,您的产品可能是有价值的,我真的不认为这是一个有用的答案。我自己没有答案(我只是一个偶然的Excel用户),但我确定它不需要购买第三方产品。 – 2010-04-12 19:48:22
我敢肯定,喷射尝试将数据类型分配给基于它所认为在前五行每一列。如果在前五行后面的内容不属于该数据类型,它将会将其转换或不返回任何内容。
电子表格的前五行比开始截断的项目的精度要低吗?
我只是测试你的数据,这method张贴在这里工作过。
即当放入DataSet时,单元值保持精度为18.124962832。
是的 - IMEX = 1参数是使这项工作。几周前我只好用它。 – 2011-05-13 22:21:47
你可以在这里发布你的代码片段吗? – balalakshmi 2010-04-11 10:44:12