Как сохранять Excel НЕ только для чтения? - C#
Формулировка задачи:
Сохраняю данные из datagridview в ecxel следующим образом
Но при попытке открыть этот документ, мне пишет что он только для чтения:
Excel.Application excelapp = new Excel.Application(); Excel.Workbook workbook = excelapp.Workbooks.Add(); Excel.Worksheet worksheet = workbook.ActiveSheet; for (int i = 1; i < dataGridView1_2016.RowCount + 1; i++) { for (int j = 1; j < dataGridView1_2016.ColumnCount + 1; j++) { worksheet.Rows[i].Columns[j] = dataGridView1_2016.Rows[i - 1].Cells[j - 1].Value; } } excelapp.AlertBeforeOverwriting = false; workbook.SaveAs(System.Windows.Forms.Application.StartupPath + @"/temp.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, false, false, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlLocalSessionChanges, false, false, false, true); excelapp.Quit();
string filename = @"/temp.xlsx"; string ConnectionString = String.Format("Provider =Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=No";Data Source={0}", filename); DataSet ds = new DataSet("EXCEL"); OleDbConnection cn = new OleDbConnection(ConnectionString); cn.Open(); //System.Data.OleDb.OleDbException: "Обновление невозможно. База данных или объект доступны только для чтения." DataTable schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); string sheet1 = (string)schemaTable.Rows[0].ItemArray[2]; string select = String.Format("SELECT * FROM [{0}]", sheet1); OleDbDataAdapter ad = new OleDbDataAdapter(select, cn); ad.Fill(ds); dataGridView2.DataSource = ds;
Решение задачи: «Как сохранять Excel НЕ только для чтения?»
textual
Листинг программы
var workbook = new XLWorkbook(); var worksheet = workbook.Worksheets.Add($"Отчет за {monthName[monthNum - 1]} {dtpEndPeriod.Value.Year}г"); var saveFileDialog = new SaveFileDialog { Filter = "Excel files|*.xlsx", Title = "Сохранить как...", FileName = $"Отчет ПРБ за {monthName[monthNum - 1]} {dtpEndPeriod.Value.Year}г" }; if (saveFileDialog.ShowDialog() == DialogResult.OK) { if (!string.IsNullOrWhiteSpace(saveFileDialog.FileName)) workbook.SaveAs(saveFileDialog.FileName); MessageBox.Show("Сохранение произведено успешно.", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д