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

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

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

这是function:

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; } 

一切正常,但是当我对数据集进行foreach并检索数据时出现格式问题。

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

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

当我上传之前更改列格式,一切正常! 但我正在寻找一个自动的过程来做到这一点。 任何人都可以帮忙

预先感谢您的答案。

我想你应该尝试改变这个图书馆。 我build议你使用ExcelDataReader 2.1.2.3,这里是它的NuGet: https : //www.nuget.org/packages/ExcelDataReader/我用这个库,它是非常快速,轻量级的库。 这里是我的代码:

 public List<Checklist> Provide() { List<Checklist> checklists = new List<Checklist>(); using (var reader = ExcelReaderFactory.CreateOpenXmlReader(m_Stream)) { while (reader.Read()) { Checklist checklist = new Checklist(); checklist.Description = reader.GetString(1); checklist.View = reader.GetString(2); checklist.Organ = reader.GetString(3); checklists.Add(checklist); } return checklists; } } 

感谢@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; }