通过vb.net从excel(xlsx)获取数据

时间:2019-07-01 17:32:15

标签: excel vb.net oledbconnection

如何读取受密码保护的Excel文件

我需要的是使用OLEDB连接读取受密码保护的Excel文件 如果有人可以解决此问题,请告诉我... 谢谢

在没有密码的情况下可以正常工作

const readline = require('readline');
const fs = require('fs');
const FILE_PATH = 'data.ndjson';

module.exports = async () =>
{
    const linesCount = await getLinesCount();
    const randomLineIndex = Math.floor(Math.random() * linesCount);
    const content = await getLineContent(randomLineIndex);
    return content;
};

//
// HELPERS
//

function getLineReader()
{
    return readline.createInterface({
        input: fs.createReadStream(FILE_PATH)
    });
}

async function getLinesCount()
{
    return new Promise(resolve =>
    {
        let counter = 0;
        getLineReader()
        .on('line', function (line)
        {
            counter++;
        })
        .on('close', () =>
        {
            resolve(counter);
        });
    });
}

async function getLineContent(index)
{
    return new Promise(resolve =>
    {
        let counter = 0;
        getLineReader().on('line', function (line)
        {
            if (counter === index)
            {
                resolve(line);
            }
            counter++;
        });
    });
}

1 个答案:

答案 0 :(得分:-1)

显然,如果您尝试从VB.NET打开受密码保护的Excel工作簿,则会收到错误消息“无法解密文件”。将Password=值添加到您的连接字符串也不起作用。

要解决此问题,请首先使用Microsoft.VisualBasic.Interaction.GetObject()打开Excel工作簿,然后使用要使用的连接/记录集方法将其打开。 GetObject()打开提示用户输入密码,然后您可以使用首选方法自由打开文件。例如:

' Open the Excel workbook to prompt for the password
Dim xl As Object
xl = GetObject(CurrentProject.Path & "\" & "MASTER JAN 2009.xls")
' Adding your code here should work as the workbook will be opened and so
' you should be able to connect to it.

当然,您的用户必须知道密码。

此解决方案来自Open a password-protected Excel workbook