使用c#oledbc格式化电子表格

时间:2015-08-21 08:10:48

标签: c# asp.net-mvc excel spreadsheet oledbconnection

我有一个电子表格,我希望使用C#将其上传到ASP.NET-MVC工具中以提取数据,然后将它们放在SQL服务器数据库上。

我创建了一个将数据放入DataSet的函数,以便我可以在将数据放入数据库后使用它。

这是功能:

public DataSet getData(HttpPostedFileBase file, string path)
{
    var fileName = Path.GetFileName(file.FileName);
    oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\"");
    DataSet ds = new DataSet();
    OleDbCommand cmd = new OleDbCommand();
    OleDbDataAdapter oleda = new OleDbDataAdapter();

    oledbConn.Open();

    cmd.Connection = oledbConn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT * FROM [Worksheet0$]";

    oleda = new OleDbDataAdapter(cmd);
    oleda.Fill(ds);
    oledbConn.Close();

    return ds;
}

一切正常,但当我对数据集进行预测并检索数据时,存在格式问题。

我的电子表格中的值格式化为数字,因此例如1.25变为1.3。单元格显示1.3但是当我点击它时,值为1.25。

当我检查我的数据集时,其中的值是格式化的值(不是实际值),例如1.3而不是1.25。

当我在上传之前更改列格式时,一切正常!但我正在寻找一个自动流程来做到这一点。有人可以帮忙吗?

提前感谢您的回答。

2 个答案:

答案 0 :(得分:1)

我认为您应该尝试更改此库。我建议你使用ExcelDataReader 2.1.2.3,这里是NuGet:https://www.nuget.org/packages/ExcelDataReader/ 我使用这个库,它非常快,而且是轻量级的库。这是我的代码:

if(window.angular === undefined) {
    ....
}

答案 1 :(得分:0)

感谢@Nadeem Khouri

我使用了ExcelDataReaderLibrary

以下是工作代码:

public DataSet getData(string path)
{
    FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read);
    IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
    DataSet result = excelReader.AsDataSet();
    return result;
}