asp.NET 中把Excel文件导入到 Oracle 数据库中怎么做,请大家帮助
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.NET 中把Excel文件导入到 Oracle 数据库中怎么做,请大家帮助相关的知识,希望对你有一定的参考价值。
很简单的,有好几种方式,第一:可以建一个和EXCEL一样的DATABALE,把数据写入到datatable,再连接数据库导入。
第二:可以使用VBA进行导入。
第三:直接把EXCEL作为数据源导入ORACLE中。 参考技术A 先把excel生成datatable 然后导入数据库,想要源码的话,联系我
将 Excel 导入 SQL 将日期存储为 ASP.NET 中的数值
【中文标题】将 Excel 导入 SQL 将日期存储为 ASP.NET 中的数值【英文标题】:Importing Excel to SQL stores dates as numeric values in ASP.NET 【发布时间】:2020-05-01 18:13:49 【问题描述】:我有一个将 Excel 文件(使用 asp.net 的用户输入)加载到 SQL 表的 sn-p,我一直试图将日期保留为“DD/MM/YYYY”而不是“438xx”。我尝试使用.NumberFormat
,但它没有给出任何解决方案,因为数据表除了 ToString() 之外不允许任何东西,它也将值存储为 int 值。有什么方法可以转换这些数据?
if (subeArchivo.HasFile)
string path = string.Concat(Server.MapPath("~/" + subeArchivo.FileName));
subeArchivo.SaveAs(path);
Microsoft.Office.Interop.Excel.Application appExcel;
Microsoft.Office.Interop.Excel.Workbook workbook;
Microsoft.Office.Interop.Excel.Range range;
Microsoft.Office.Interop.Excel._Worksheet worksheet;
appExcel = new Microsoft.Office.Interop.Excel.Application();
workbook = appExcel.Workbooks.Open(path, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
worksheet = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets[1];
range = worksheet.UsedRange;
int rowCount = range.Rows.Count;
int colCount = range.Columns.Count;
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("ID_USU_CAR");
dt.Columns.Add("RUT_DCT");
dt.Columns.Add("TIP_CON");
dt.Columns.Add("ID_CON");
dt.Columns.Add("INI_BEN"); //date values as int
dt.Columns.Add("FIN_BEN"); //date values as int
dt.Columns.Add("MON_CLP");
for (int Rnum = 3; Rnum <= rowCount; Rnum++)
DataRow dr = dt.NewRow();
//Reading Each Column value From sheet to datatable Colunms
for (int Cnum = 1; Cnum <= colCount; Cnum++)
dr[Cnum - 1] = (range.Cells[Rnum, Cnum]).Value2.ToString();
dt.Rows.Add(dr); // adding Row into DataTable
dt.AcceptChanges();
workbook.Close(true);
appExcel.Quit();
try
string cadenaConn = ConfigurationManager.ConnectionStrings["cadenaConn"].ConnectionString.ToString();
SqlBulkCopy bulkcopy = new SqlBulkCopy(cadenaConn);
SqlBulkCopyColumnMapping ID_USU_CAR = new SqlBulkCopyColumnMapping("ID_USU_CAR", "ID_USU_CAR");
bulkcopy.ColumnMappings.Add(ID_USU_CAR);
SqlBulkCopyColumnMapping RUT_DCT = new SqlBulkCopyColumnMapping("RUT_DCT", "RUT_DCT");
bulkcopy.ColumnMappings.Add(RUT_DCT);
SqlBulkCopyColumnMapping TIP_CON = new SqlBulkCopyColumnMapping("TIP_CON", "TIP_CON");
bulkcopy.ColumnMappings.Add(TIP_CON);
SqlBulkCopyColumnMapping ID_CON = new SqlBulkCopyColumnMapping("ID_CON", "ID_CON");
bulkcopy.ColumnMappings.Add(ID_CON);
SqlBulkCopyColumnMapping INI_BEN = new SqlBulkCopyColumnMapping("INI_BEN", "INI_BEN");
bulkcopy.ColumnMappings.Add(INI_BEN);
SqlBulkCopyColumnMapping FIN_BEN = new SqlBulkCopyColumnMapping("FIN_BEN", "FIN_BEN");
bulkcopy.ColumnMappings.Add(FIN_BEN);
SqlBulkCopyColumnMapping MON_CLP = new SqlBulkCopyColumnMapping("MON_CLP", "MON_CLP");
bulkcopy.ColumnMappings.Add(MON_CLP);
bulkcopy.DestinationTableName = "TBL";
bulkcopy.WriteToServer(dt);
lblConfirma.Text = "CARGA EXITOSA";
catch (Exception ex)
lblConfirma.Text = ex.Message.ToString();
【问题讨论】:
您能否分享一些 Excel 文件中的值示例以及 datatable 中的预期值是什么?你得到的输出是什么? 【参考方案1】:Excel 将日期存储为双精度数,计算自固定 epoc 以来的天数。您可以拨打DateTime.FromOADate
进行转换。
【讨论】:
个人,而不是将excel范围复制到DataTable
。我会实现一个IDataReader
直接从范围中提取数据,并根据 SqlBulkCopy 尝试读取的列类型转换每个值。
你好,我在哪里可以调用日期时间?大容量复制或数据表都不允许我:(
DateTime.FromOADate((range.Cells[Rnum, Cnum]).Value2),当然要知道是哪一列...以上是关于asp.NET 中把Excel文件导入到 Oracle 数据库中怎么做,请大家帮助的主要内容,如果未能解决你的问题,请参考以下文章
使用asp.net将Excel文件数据导入Sql server
ASP.NET 导出EXCEL时如何不把一些不是EXCEL的符号一起导出到EXCEL?
将 Excel 导入 SQL 将日期存储为 ASP.NET 中的数值