Проблема сохранения файла Excel после вставки данных - PullRequest
2 голосов
/ 04 апреля 2010

Я хочу записать данные в существующий файл Excel (я делаю это легко) Но я не могу сохранить изменения в файле Excel (на самом деле я вижу изменения в файле Excel, но он кажется открытым, и в конце концов возникают некоторые проблемы, такие как «файл уже открыт с тем же именем и так далее ... )

Excel.Application app= new Microsoft.Office.Interop.Excel.Application();
        Excel.Workbook appbook= app.Workbooks.Open(appxls, 0, true, 5, "", "", false, Excel.XlPlatform.xlWindows, "\t", true, false, 0, true, Missing.Value, Missing.Value);
        Excel.Sheets pages= appbook.Worksheets;
        Excel.Worksheet page= (Excel.Worksheet)pages.get_Item(1);

// ... я изменяю некоторые значения в файле excel и хочу сохранить их: // appxls - это строка, содержащая путь

 appbook.SaveAs(appxls, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing,false, Type.Missing, Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    appbook.Close(true, Missing.Value, Missing.Value);
    app.Quit();

Где проблема, как я могу решить ее, используя Microsoft.interop.

Ответы [ 2 ]

3 голосов
/ 04 апреля 2010

Вы открываете книгу, используя имя файла с именем «appxls» только для чтения. (Параметр ReadOnly метода Workbooks.Open является третьим параметром, и вы передаете true.)

Позже вы используете метод Workbook.SaveAs, но пытаетесь сохранить файл, используя то же самое точное имя файла, которое содержится в переменной appxls, которую вы использовали для открытия книги. Это попытка перезаписать открытый только для чтения файл, который, следовательно, предотвращается.

Я вижу два возможных решения:

  1. Передайте false для параметра ReadOnly метода Workbooks.Open, чтобы вы могли сохранить его позже, используя метод Workbook.Save. В вашем случае вы можете сохранить его, позвонив по номеру appbook.Save().

  2. Продолжайте открывать файл только для чтения, но при последующем использовании метода Workbook.SaveAs его следует сохранить под другим именем.

Надеюсь, это поможет!

0 голосов
/ 06 апреля 2010

Я пытался использовать Oledb и успешно создал пустой файл Excel с кодом:

    OleDbConnection connection= new OleDbConnection(connectionstring);
    string addSheet= "CREATE TABLE Mus(id nvarchar(255), name nvarchar(5))";
    connection.Open();
    OleDbCommand sqlcommand = new OleDbCommand(addSheet,connection);
    sqlcommand.ExecuteNonQuery();
    connection.Close();

где строка подключения:

string connectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myexcel.xls;Extended Properties=""Excel 8.0;HDR=YES;""";

Итак, у меня есть еще одна проблема с добавлением со вставкой, и ошибка:

"количество значений запроса и полей назначения не совпадают"

Я тщательно написал свою команду и не могу найти ошибку :( Как я могу ее решить?

Спасибо!

(важно, что я работаю над aspx, приведенный выше код работает в настольных приложениях, но для сохранения aspx местоположение должно отличаться от responsece.outstream, как я понял из моих исследований)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...