我有几个在excel工作表数据的列的其中我必须导入到我的申请。

我做到这一点使用 -

string strConn;
OleDbDataAdapter oledaExcelInfo;

strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Server.MapPath(strSavePath + strRepFileName) + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\"";
oledaExcelInfo = new OleDbDataAdapter("SELECT * FROM [Book1]", strConn);

dsetExcelInfo = new DataSet();            
oledaExcelInfo.Fill(dsetExcelInfo, "CCInfo");

虽然此进口数据成功,有时导入数据不正确,即有时一些1234567可以导入为1.23E+06

这可以如果在Excel文件中的数据是'1234567代替1234567(追加单引号)

解决

我现在正在试图操纵数据,我从Excel中获取,这样我导入数据之前,我可以以编程方式追加'所有的值,以防止不正确的导入。

我使用OleDbDataAdapter.Update甚至尝试过,但我想这不会帮助,因为数据被导入后出现这种情况。这是否正确?

我可以操纵数据,以便我输入正确的数据?我该怎么做?

有帮助吗?

解决方案

我使用的开放源码的数据,因为它的 NPOI库,向Excel导入数据和保存格式在所述散热片即1234567将被导入为1234567代替像1.23E+06以不同的格式导入数据

代替如上面的问题导入的数据,我导入使用NPOI库数据 -

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

HSSFWorkbook hssfworkbook;
using (FileStream file = new FileStream(Server.MapPath(strSavePath + strRepFileName), FileMode.Open, FileAccess.Read))
{
     hssfworkbook = new HSSFWorkbook(file);
}
Sheet sheet = hssfworkbook.GetSheet("Book1");

DataTable dt = new DataTable();    //Create datatable 
dt.Columns.Add();             //Add data columns

for (int count = 0; count <= sheet.LastRowNum; count++)
{
    DataRow dr = dt.NewRow();         //Create new data row

    //Based on the type of data being imported - get cell value accordingly    
    dr[0] = sheet.GetRow(count).GetCell(0).StringCellValue;   
    //dr[0] = sheet.GetRow(count).GetCell(0).NumericCellValue;
    //dr[0] = sheet.GetRow(count).GetCell(0).RichStringCellValue;
    //dr[0] = sheet.GetRow(count).GetCell(0).DateCellValue;
    //dr[0] = sheet.GetRow(count).GetCell(0).BooleanCellValue;

    dt.Rows.Add(dr);  //Add row to datatable
}

其他提示

我刚刚得到了类似的问题(在这里找到:古怪SELECT从经由OleDbDataAdapter的方法Excel文件(C#))。

尝试使用下面的连接字符串,如果你想只使用.NET框架,无需外部库:

string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";";  

这JET切换引擎ACE为我做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top