如何在C#中使用密码加载Excel文件
我在C#项目上工作
我使用下面的代码在DataSet上导入XLS或XLSX文件。
public static DataSet ImportExcelXLS(string FileName, bool hasHeaders) { string HDR = hasHeaders ? "Yes" : "No"; string strConn; if (FileName.Substring(FileName.LastIndexOf('.')).ToLower() == ".xlsx") { strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\""; } else { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties=\"Excel 8.0;HDR=" + HDR + ";IMEX=0\""; } DataSet output = new DataSet(); using (OleDbConnection conn = new OleDbConnection(strConn)) { conn.Open(); DataTable schemaTable = conn.GetOleDbSchemaTable( OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); foreach (DataRow schemaRow in schemaTable.Rows) { string sheet = schemaRow["TABLE_NAME"].ToString(); if (!sheet.EndsWith("_")) { try { OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + sheet + "]", conn); cmd.CommandType = CommandType.Text; sheet = sheet.Replace("$", ""); DataTable outputTable = new DataTable(sheet); output.Tables.Add(outputTable); new OleDbDataAdapter(cmd).Fill(outputTable); } catch (Exception ex) { throw new Exception(ex.Message + string.Format("Sheet:{0}.File:F{1}", sheet, FileName), ex); } } } } return output; }
此代码正确工作无需密码加载Excel文件。 但运行时加载文件密码显示错误:
无法启动您的应用程序。 工作组信息文件丢失或由另一个用户专门打开。
现在如何更改我的代码加载encryption文件?
请:使用这个lib:
using Microsoft.Office.Interop.Excel
请提供密码:
WorkbookObject.Password = password;
请改变连接string:
string conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + s + ";Password=password;Extended Properties='Excel 8.0;HDR=YES'";
在这里,你的答案是:
if (FileName.Substring(FileName.LastIndexOf('.')).ToLower() == ".xlsx") { strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Password=password;Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\""; } else { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Password=password;Extended Properties=\"Excel 8.0;HDR=" + HDR + ";IMEX=0\""; }
试试这个代码:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Password=password;Extended Properties=\"Excel 8.0;HDR=" + HDR + ";IMEX=0\"";
但是仍然是例外:
无法启动您的应用程序。 工作组信息文件丢失或由另一个用户专门打开。