通过OleDb连接,读取Excel。
Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'
特别注意:
Extended Properties='Excel 8.0;HDR=yes;IMEX=1'
A:HDR ( HeaDer Row ) 默认值YES。
HDR=Yes表示第一行是标题,不做为数据使用;当HDR=NO,则表示第一行不是标题,做为数据来使用。
B:IMEX ( IMport EXport mode )
IMEX 有三种模式,各自引起的读写行为也不同,容後再述:
0 is Export mode
1 is Import mode
2 is Linked mode (full update capabilities)
当IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
IMEX=1 解决数字与字符混合时,识别不正常的情况。
当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
C:Excel 8.0
对于Excel 97以上版本都用Excel 8.0
// 导入收款单数据
protected void Button2_Click(object sender, EventArgs e)
{
try{
string path = "D:\\Work\\核销记录20121116\\";
string[] names = new string[]{
//"天津 期初数据格式(核销记录).xlsx"
"浙江大区债权数据(核销记录).xlsx"
};
for (int i = 0; i < names.Length;i++ )
{
readExcel(path, names[i]);
}
// 操作数据库
insertDB();
}
catch (Exception ex)
{
string Script = CommonBLL.getRedirectErrorPageScript("ZJ0000", Server.UrlEncode(Request.RawUrl.ToString()), ex);
Response.Write(Script);
Response.End();
}
}
private void readExcel(string path, string name)
{
object missing = Missing.Value;
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Workbooks.Open(path + name, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
for (int index = 0; index < excelApp.Workbooks[1].Worksheets.Count; index++)
{
//只导第一个Sheet
if(index > 0){
break;
}
//取得每个Sheet名
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.Workbooks[1].Worksheets[index + 1];
string sSheetName = ws.Name;
DataSet ds = ExecleDs(path + name, sSheetName);
DataTable dt = ds.Tables["Execl"];
for (int i = 0; i < dt.Rows.Count; i++)
{
if (String.IsNullOrEmpty(dt.Rows[i]["整机机号"].ToString()))
{
continue;
}
//收款单号
iDocumentNo++;
string receiptDocumentNo = "SK" + iDocumentNo;
aList.Add(getInsertReceiptDocument(dt.Rows[i], receiptDocumentNo, name));
}
}
}
private DataSet ExecleDs(string filenameurl,string sheet)
{
OleDbConnection OleCon = new OleDbConnection();
OleDbCommand OleCmd = new OleDbCommand();
OleDbDataAdapter OleDa = new OleDbDataAdapter();
DataSet Myds = new DataSet();
OleCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filenameurl + ";Extended Properties=Excel 12.0;";
OleCon.Open();
OleCmd.CommandText = "select * from ["+sheet+"$]";
OleCmd.Connection = OleCon;
OleDa.SelectCommand = OleCmd;
OleDa.Fill(Myds, "Execl");
OleCon.Close();
OleCmd.Dispose();
OleDa.Dispose();
OleCon.Dispose();
return Myds;
}
private ReceiptDocumentModel getInsertReceiptDocument(DataRow dr, string receiptDocumentNo, string fileName)
{
ReceiptDocumentModel receiptDocumentModel = new ReceiptDocumentModel();
receiptDocumentModel.Receipt_document_no = receiptDocumentNo;
switch (fileName.Substring(0, 2))
{
case "天津":
receiptDocumentModel.Business_area = "B0002";
break;
case "浙江":
receiptDocumentModel.Business_area = "C0003";
break;
}
receiptDocumentModel.Machine_no = dr["整机机号"].ToString();
receiptDocumentModel.Receipt_status = "DL119001";
receiptDocumentModel.Receipt_amount = CommonBLL.converTextToAmount(dr["核销金额"].ToString());
receiptDocumentModel.Receipt_verificated_amount = 0;
receiptDocumentModel.Receipt_refund_amount = 0;
receiptDocumentModel.Receipt_balance = CommonBLL.converTextToAmount(dr["核销金额"].ToString());
receiptDocumentModel.Receipted_date = DateTime.Parse(dr["核销日期"].ToString()).ToString("yyyy-MM-dd");
receiptDocumentModel.Creater = "admin";
receiptDocumentModel.Last_modify_date = DateTime.Today.ToString("yyyy-MM-dd");
receiptDocumentModel.Remark = dr["销售合同号"].ToString();
return receiptDocumentModel;
}
// 操作数据库
private void insertDB(){
object[] insertObject = new object[aList.Count];
for (int i = 0; i < aList.Count; i++)
{
insertObject[i] = aList[i];
}
// 操作数据库
int result = moneyBLL.updateAccount(insertObject, null);
if (result > 0)
{
ClientScript.RegisterStartupScript(this.GetType(), "myscript", "<script type='text/javascript'>alert('导入成功。');</script> ");
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "myscript", "<script type='text/javascript'>alert('导入失败。');</script> ");
}
}
分享到:
相关推荐
下面是一段基本的C#代码示例,展示了如何使用OLEDB打开并读取Excel文件: ```csharp using System; using System.Data; using System.Data.OleDb; class ExcelOperations { public static void ReadExcelFile...
这个项目就是一个典型的示例,它演示了如何使用OleDb技术来读取Excel表格的数据,并在窗体上通过DataGridView控件进行展示。下面将详细讲解这个过程涉及的知识点。 首先,`OleDb`(OLE DB)是微软提供的一种数据...
在C#编程中,当你尝试从Excel文件读取数据或者将数据写入Excel时,可能会遇到“Microsoft.ACE.OLEDB.12.0”这个错误。这个问题通常出现在尝试使用ACE OLEDB提供程序(Access Database Engine)连接到Excel文件时,而...
### C# .NET读取Excel文件的所有Sheet名称 在日常工作中,经常需要处理Excel文件,尤其是在数据管理和报表生成方面。为了有效地操作Excel文件中的多个Sheet(工作表),我们需要能够读取这些Sheet的名称。本篇文章...
C# 读取加密的Excel 文件; 有源码,VS2010开发。 采用的是微软的Microsoft.Office.Interop.Excel, V14.0,来读取加密后的Excle文件。 不是采用第三方控件NPOI读取加密的Excel文件。 开始研究NPOI读取加密的Excel文件...
在C#中,读取Excel文件有多种方法,这里我们将探讨三种经典方法。这些方法主要应用于需要从Excel文件中提取数据或与Excel文件交互的场景。 **方法一:采用OleDB读取Excel文件** OleDb是.NET Framework提供的一种...
在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,例如将Excel数据通过应用程序导入SQL Sever等数据库中以备使用。笔者在开发“汽车产业链ASP协同商务平台”中遇到了类似需求。某...
本示例将深入探讨如何在C#中不依赖Microsoft Office组件来读取Excel表格数据,这通常通过使用第三方库或者.NET Framework提供的System.Data.OleDb组件实现。 首先,我们介绍最常用的方法之一,即使用`System.Data....
通过上述方法,我们可以有效地解决C#读取Excel文件时遇到的空值问题。在实际开发中,还需要根据具体的业务场景和需求进行相应的调整和优化。例如,在处理大数据量时,可以考虑使用更高效的库,如EPPlus或NPOI,这些...
C# 示例源码 快速读取Excel,把Excel当成数据来源(Microsoft.Jet.OLEDB.4.0),可读取多张表,
【Microsoft.ACE.OLEDB.12.0-提供程序】本资源是C#程序使用OleDb读取Excel时必备的驱动程序——Microsoft.ACE.OLEDB.12.0的提供程序。OleDb是一个数据库驱动接口,能够通过标准的 SQL 语句访问多种数据库,包括 ...
在C#编程中,OLEDB(Object Linking and Embedding, Database)是一个强大的数据访问接口,用于连接多种数据源,包括Microsoft Access、Excel、SQL Server等。本教程将基于"OLEDB.rar"压缩包中的"CSharp oledb_...
功能描述: ...2、选取Excel中某个sheet中的某几列读入到Dataset里面; 3、从Dataset导出到Excel表格 注:此代码运行是需有office组建作为支持,即运行该程序的电脑上必须安装office软件;程序由VS2012开发。
### C#读取Excel中的数据 #### 一、引言 Excel作为Microsoft Office套件中的重要组成部分,因其强大的数据处理能力和友好的用户界面而被广泛应用于各种数据管理和分析场景。然而,随着应用程序对数据处理需求的...
另一个替代方法是使用`OleDb`连接读取Excel文件,它通常能更好地处理数据类型,比如读取日期时不会将其转换为浮点数。但是,`OleDb`方法可能不适用于所有Excel版本,特别是较新的XLSX格式,而且可能需要额外安装驱动...
2. **安全性考虑**:直接读取Excel文件可能存在安全风险,建议在生产环境中进行适当的验证和错误处理。 3. **性能优化**:对于非常大的Excel文件,直接加载所有数据可能会导致内存占用过高。可以考虑分批次读取数据...
在探讨"C#采用ADO.NET读取Excel 0307 数据不完整的问题"时,我们首先需要理解几个关键概念:ADO.NET、OLEDB、Excel文件的版本差异以及数据类型的自动识别机制。 ### ADO.NET与OLEDB ADO.NET是Microsoft提供的一套...
### C# 读取 Excel Sheet(工作簿)名字 ...通过以上步骤,我们可以有效地实现C#读取Excel Sheet名称的功能,并进一步对特定Sheet进行数据处理。这对于日常开发工作中处理Excel文件具有重要意义。
本案例将深入探讨如何使用C#高效快速地读取Excel文件,具体通过ADO.NET进行操作。ADO.NET是微软.NET框架的一部分,它提供了一种与数据库交互的强大方式。 首先,我们需要引入必要的命名空间,以便在C#代码中使用ADO...
本文将详细介绍三种经典的 C# 读取 Excel 文档的方法,包括通过 OleDB 接口、使用 Interop Excel 库以及利用第三方库如 EPPlus。 #### 一、通过 OleDB 接口读取 Excel 文件 OleDB 是一种用于访问多种数据源的技术...