/// <summary> /// Lance l'exportation des données vers le path choisit, à l'appuie sur le bouton "Exporter" /// </summary> /// <param name="Sender"></param> /// <param name="Event"></param> private void ExportButton_Click(object Sender, EventArgs Event) { // met le maximun de la progress bar au nombre de ligne ExportProgressBar.Maximum = ArticleDAO.NbArticles(); try { // écrit les titres des colonnes en première ligne var csv = new StringBuilder(); var TitleQuantityAndDescriptionRow = "Description"; var TitleRefRow = "Ref"; var TitleBrandRow = "Marque"; var TitleFamilyRow = "Famille"; var TitleSubFamilyRow = "Sous-Famille"; var TitlePriceRow = "Prix H.T."; ExportProgressBar.PerformStep(); // formate cette ligne puis l'ajoute au csv var TitleLine = string.Format("{0};{1};{2};{3};{4};{5}", TitleQuantityAndDescriptionRow, TitleRefRow, TitleBrandRow, TitleFamilyRow, TitleSubFamilyRow, TitlePriceRow); csv.AppendLine(TitleLine); // fait la meme chose pour tout les articles de la bd Article[] AllArticle = ArticleDAO.GetAllArticles(); foreach (Article A in AllArticle) { // une ligne est crée, on avance donc d'une étape dans la progress bar ExportProgressBar.PerformStep(); var QuantityAndDescriptionRow = A.Quantity + " " + A.Description; var RefRow = A.RefArticle; var BrandRow = A.RefBrand.ToString(); var FamilyRow = A.RefSubFamily.RefFamily.ToString(); var SubFamilyRow = A.RefSubFamily.ToString(); var PriceRow = A.PriceHT.ToString(); var NewLine = string.Format("{0};{1};{2};{3};{4};{5}", QuantityAndDescriptionRow, RefRow, BrandRow, FamilyRow, SubFamilyRow, PriceRow); csv.AppendLine(NewLine); } // ecrit les données dans le fichier au path choisit File.WriteAllText(CSVNameTextBox.Text, csv.ToString()); } catch (Exception ExceptionCaught) { MessageBox.Show("L'export à échoué \n" + ExceptionCaught.Message.ToString(), ExceptionCaught.GetType().ToString()); } this.Close(); }
private void ExportGridFast() //Exporta el grid rápidamente a un archivo de excel (experimental) { // TODO: Ajustar ancho de columnas, eliminar la columna A de excel (está vacía) SaveFileDialog sfd = new SaveFileDialog { Filter = "Excel (*.xlsx)|*.xlsx", FileName = OutFileNameTextBox.Text + ".xlsx", Title = "Guardar como archivo de excel", DefaultExt = ".xlsx", ValidateNames = true }; if (sfd.ShowDialog() == DialogResult.OK) { XMLDataGridView.SelectAll(); DataObject dataObj = XMLDataGridView.GetClipboardContent(); if (dataObj != null) { Clipboard.SetDataObject(dataObj); } Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet = null; object misValue = System.Reflection.Missing.Value; try { app.Visible = false; worksheet = workbook.Sheets[1]; worksheet = workbook.ActiveSheet; List <DataGridViewColumn> listVisible = new List <DataGridViewColumn>(); foreach (DataGridViewColumn col in XMLDataGridView.Columns) { if (col.Visible) { listVisible.Add(col); } } for (int i = 0; i < listVisible.Count; i++) { worksheet.Cells[1, i + 2] = listVisible[i].HeaderText; ExportProgressBar.PerformStep(); } app.Visible = false; worksheet = workbook.Sheets[1]; worksheet = workbook.ActiveSheet; Microsoft.Office.Interop.Excel.Range CR = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, 1]; CR.Select(); worksheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true); worksheet.Columns["A"].Delete(); worksheet.Columns.AutoFit(); ExportProgressBar.Value = ExportProgressBar.Maximum; MessageBox.Show("El archivo fue exportado con éxito.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); if (File.Exists(sfd.FileName)) { try { File.Delete(sfd.FileName); //Elimina el archivo existente } catch (IOException ex) { MessageBox.Show("No fue posible eliminar el archivo anterior. " + ex.Message); return; } } if (MessageBox.Show("¿Deseas abrir el archivo generado?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { workbook.SaveAs(sfd.FileName); workbook.Saved = true; app.Visible = true; } else { workbook.SaveAs(sfd.FileName); workbook.Saved = true; workbook.Close(false); } } catch (Exception e) { workbook.Close(false); MessageBox.Show(e.Message); } XMLDataGridView.ClearSelection(); } }
private void ExportGridToXLSX() //Exporta el grid a un archivo de excel { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Excel (*.xlsx)|*.xlsx"; sfd.FileName = OutFileNameTextBox.Text + ".xlsx"; sfd.Title = "Guardar como archivo de excel"; sfd.DefaultExt = ".xlsx"; sfd.ValidateNames = true; if (sfd.ShowDialog() == DialogResult.OK) { Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet = null; try { app.Visible = false; worksheet = workbook.Sheets[1]; worksheet = workbook.ActiveSheet; worksheet.Columns.AutoFit(); for (int i = 0; i < XMLDataGridView.ColumnCount; i++) { if (XMLDataGridView.Columns[i].Visible == true) { worksheet.Cells[1, i + 1] = XMLDataGridView.Columns[i].HeaderText; } } for (int i = 0; i < XMLDataGridView.RowCount; i++) { for (int j = 0; j < XMLDataGridView.ColumnCount; j++) { if (XMLDataGridView.Columns[j].Visible == true) { if (XMLDataGridView[j, i].Value != null || XMLDataGridView[j, i].Value.ToString() != "-") { worksheet.Cells[i + 2, j + 1] = XMLDataGridView[j, i].Value.ToString(); } else { worksheet.Cells[i + 2, j + 1] = ""; } } } ExportProgressBar.PerformStep(); } MessageBox.Show("El archivo fue exportado con éxito.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); if (MessageBox.Show("¿Deseas abrir el archivo generado?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { workbook.SaveAs(sfd.FileName); workbook.Saved = true; app.Visible = true; } else { workbook.SaveAs(sfd.FileName); workbook.Saved = true; workbook.Close(true, sfd.FileName); } } catch (Exception e) { workbook.Close(false); MessageBox.Show(e.Message); } } }
private void ExportGridToCSV() //Exporta el grid a un csv { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "CSV (*.csv)|*.csv"; //Filtro de archivos sfd.FileName = OutFileNameTextBox.Text + ".csv"; //Carga el nombre que se asignó en el textbox sfd.Title = "Guardar como archivo csv"; //Texto de la ventana sfd.DefaultExt = ".csv"; //Extensión por defecto sfd.ValidateNames = true; //Valida el nombre del archivo bool fileError = false; if (sfd.ShowDialog() == DialogResult.OK) { if (File.Exists(sfd.FileName)) { try { File.Delete(sfd.FileName); //Elimina el archivo existente } catch (IOException ex) { fileError = true; MessageBox.Show("No fue posible eliminar el archivo anterior. " + ex.Message); } } if (!fileError) //Si no hay problemas con sobreescribir el archivo { try { string[] outputCsv = new string[XMLDataGridView.Rows.Count + 1]; for (int i = 0; i < XMLDataGridView.ColumnCount; i++) //For para guardar el nombre de las columnas en la primer línea del archivo { if (XMLDataGridView.Columns[i].Visible == true) //Sólo si la columna es visible { outputCsv[0] += XMLDataGridView.Columns[i].HeaderText.ToString().Replace(',', ';') + ","; } } for (int i = 0; i < XMLDataGridView.RowCount; i++) //For para guardar fila por fila { bool colIsVisible = false; //Auxiliar para saber si la columna es visible for (int j = 0; j < XMLDataGridView.ColumnCount; j++) { if (XMLDataGridView.Columns[j].Visible == true) { outputCsv[i + 1] += XMLDataGridView[j, i].Value.ToString().Replace(',', ';') + ","; } } if (colIsVisible) { outputCsv[i + 1] += "\r"; } ExportProgressBar.PerformStep(); } File.WriteAllLines(sfd.FileName, outputCsv, Encoding.UTF8); MessageBox.Show("Se guardó el archivo con éxito", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Error :" + ex.Message); } } } }