Helpex - Trao đổi & giúp đỡ Đăng nhập
20

Tôi sử dụng Vs2013. Tôi đã tạo ứng dụng trong đó tôi sử dụng tệp Excel làm đầu vào và nhận liên hệ từ tệp. Mọi thứ đang hoạt động trong máy tính của tôi. Tôi có Vs2013. Windows 8.1, Ms office 2007 & 2013.
Khi tôi chạy ứng dụng của mình trong bất kỳ máy tính nào khác, nó sẽ ném

Không thể tải tệp hoặc lắp ráp 'office, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bc111e9429c' hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy các tập tin được chỉ định

Theo yêu cầu ứng dụng của tôi, tôi cần sử dụng tệp Excel từ Office 2007 đến 2013.

Tôi đã giới thiệu một số liên kết StackOverflow nhưng tôi không nhận được kết quả. Tôi bị mắc kẹt. Xin vui lòng đề nghị tôi làm thế nào để giải quyết điều này.

20 hữu ích 5 bình luận 70k xem chia sẻ
14

Máy khác của bạn cần được cài đặt phiên bản Office tương ứng. 15.0.0.0 phải tương ứng với Office 2013 - cần được cài đặt trên máy mục tiêu của bạn (các phiên bản Office khác có thể không hoạt động). Điều này gần như chắc chắn có nghĩa là bạn đang sử dụng thư viện tương tác MSOffice, chỉ hoạt động nếu office được cài đặt và dựa trên cùng một phiên bản.

Ngoài ra, bạn có thể cấu trúc lại mã của mình để chỉ đọc trực tiếp Excel XML.

14 hữu ích 4 bình luận chia sẻ
6

Tôi đã có giải pháp bằng cách thay đổi phiên bản Excel.dll. Tôi đang sử dụng 15.0.0.0 và bây giờ tôi đã thay đổi nó thành 12.0.0.0 và nó hoạt động tốt. Tôi nhận được dll từAdd reference > Browse > C: > Windows > assembly > GAC > Microsoft.Office.Interop.Excel > 12.0.0.0_etc > Microsoft.Office.Interop.Excel.dll

6 hữu ích 2 bình luận chia sẻ
3

Tôi đã tạo một tệp hàng loạt để khắc phục sự cố này. Xem kịch bản bên dưới:

    echo off
        cls
        color 1f
        echo Checking for Administrator elevation.
        openfiles>nul 2>&1

            if %errorlevel% EQU 0 goto isadmin

                COLOR 4f
            echo.    You are not running as Administrator.
            echo.    This tool cannot do it's job without elevation.
            echo.
            echo.    You need run this tool as Administrator.
            echo.

            echo.Press any key to continue . . .
            pause>nul
        exit
        :isadmin
        if exist c:\windows\assembly\GAC_MSIL\office\16.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=16
    if exist c:\windows\assembly\GAC_MSIL\office\15.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=15
    if exist c:\windows\assembly\GAC_MSIL\office\14.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=14

    md c:\windows\assembly\GAC_MSIL\office\12.0.0.0__71e9bce111e9429c
    xcopy c:\windows\assembly\GAC_MSIL\office\%officever%.0.0.0__71e9bce111e9429c c:\windows\assembly\GAC_MSIL\office\12.0.0.0__71e9bce111e9429c /s/y
pause
3 hữu ích 1 bình luận chia sẻ
1

Tôi cũng nhận được thông báo lỗi này ngay cả khi tôi có Office 2010 và tôi không có thư mục Microsoft.Office.Interop.Excel trong GAC. Tôi đã tìm thấy giải pháp cho trường hợp của mình ở đây: https://www.add-in-express.com/forum/read.php?FID=5&TID=15525 Bạn phải tham chiếu hai tệp dll từ các thư mục này: C: \ Windows \ assembly \ GAC_MSIL \ Microsoft.Vbe.Interop \ 15.0.0.0__71e9bce111e9429c \ Microsoft.Office.Interop.Excel.dll và C: \ Windows \ assembly \ GAC_MSIL \ office \ 15.0.0.0__71e9bce111e9429c \ OFFICE.DLL

1 hữu ích 0 bình luận chia sẻ
0

Tôi đã gặp vấn đề tương tự, bạn nên bao gồm gói sau (Syncfusion.XlsIO) thay vì (Microsoft.Office.interop.Excel) vì nó chỉ hỗ trợ excel 2013, nhưng gói đầu tiên 'Syncfusion.XlsIO' lại hỗ trợ Excel 2016;

=> using Syncfusion.XlsIO;

Đây là đoạn mã sau:

  using (ExcelEngine excelEngine = new ExcelEngine())
                {
                        IApplication application = excelEngine.Excel;
                        application.DefaultVersion = ExcelVersion.Excel2016;
                        IWorkbook workbook = application.Workbooks.Create(1);
                        IWorksheet worksheet = workbook.Worksheets[0];
                        //Adding text to a cell
                        for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
                        {
                           worksheet.Range[1, i].Text = dataGridView1.Columns[i - 1].HeaderText;
                        }

                        for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
                        {
                            for (int j = 0; j < dataGridView1.Columns.Count; j++)
                            {
                                worksheet.Range[i + 2, j + 1].Text = dataGridView1.Rows[i].Cells[j].Value.ToString();
                            }
                        }
                        //Saving the workbook to disk in XLSX format
                        Stream excelstream = File.Create(Path.GetFullPath(@"MyExcelFile.xlsx"));
                        workbook.SaveAs(excelstream);
                        excelstream.Dispose();
                }
0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ c# .net import-from-excel , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading