Как сохранять 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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д