using System; using System.Data; using System.Windows.Forms; using MiniSqlQuery.Core; using MiniSqlQuery.Core.Forms; namespace MiniSqlQuery.Exports.Plugin { public partial class ExportWindow : Form { private readonly IApplicationServices _services; private DataSet _dsExecutedData; public ExportWindow(IApplicationServices services) { _services = services; InitializeComponent(); txtFilePath.Text = string.Format("{0}\\export{1:yyyy-MM-dd}.htm", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), DateTime.Today); } public string SetStatusText { set { toolStripStatusLabel1.Text = value; statusStrip1.Refresh(); } } private void ExportWindow_Load(object sender, EventArgs e) { IQueryBatchProvider batchProvider = _services.HostWindow.ActiveChildForm as IQueryBatchProvider; if (batchProvider != null && batchProvider.Batch != null) { if (batchProvider.Batch.Queries.Count > 1) { BatchQuerySelectForm querySelectForm = new BatchQuerySelectForm(); querySelectForm.Fill(batchProvider.Batch); querySelectForm.ShowDialog(); if (querySelectForm.DialogResult == DialogResult.OK) { _dsExecutedData = querySelectForm.SelectedQuery.Result; } else { Close(); // user calncelled } return; } if (batchProvider.Batch.Queries.Count == 1) { _dsExecutedData = batchProvider.Batch.Queries[0].Result; return; } } MessageBox.Show("Couldn't find a result window, run a query or view a table to export the data."); Close(); } private void btnExport_Click(object sender, EventArgs e) { if (rbtXml.Checked) { ExportXml(); } if (rbtHtml.Checked) { ExportHtml(); } if (rbtCsv.Checked) { ExportCSV(); } } private void button1_Click(object sender, EventArgs e) { // Create new SaveFileDialog object SaveFileDialog dialogSave = new SaveFileDialog(); // Default file extension if (rbtCsv.Checked) { dialogSave.DefaultExt = "csv"; dialogSave.FilterIndex = 2; } if (rbtHtml.Checked) { dialogSave.DefaultExt = "htm"; dialogSave.FilterIndex = 1; } if (rbtXml.Checked) { dialogSave.DefaultExt = "xml"; dialogSave.FilterIndex = 3; } //DialogSave.DefaultExt = "txt"; // Available file extensions dialogSave.Filter = "Html File (*.htm)|*.htm|CSV File (*.csv)|*.csv|XML file (*.xml)|*.xml"; // Adds a extension if the user does not dialogSave.AddExtension = true; // Restores the selected directory, next time dialogSave.RestoreDirectory = true; // Dialog title dialogSave.Title = "Where do you want to save the file?"; // Startup directory dialogSave.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // Show the dialog and process the result if (dialogSave.ShowDialog() == DialogResult.OK) { txtFilePath.Text = dialogSave.FileName; //MessageBox.Show("You selected the file: " + DialogSave.FileName); } dialogSave.Dispose(); } //private int GetFieldCount //{ // get { return _dsExecutedData.Tables[0].Columns.Count; } //} //private int GetRowCount //{ // get { return _dsExecutedData.Tables[0].Rows.Count; } //} private void ExportHtml() { Export.HtmlExportFormat format = new Export.HtmlExportFormat(); format.FontColor = txtFontColor.Text; format.FontFamily = txtFontFamily.Text; format.FontSize = txtFontSize.Text; format.HeaderColor = txtHeaderBGColor.Text; format.RowAltColor = txtRowBgAltColor.Text; format.RowColor = txtRowBgcolor.Text; Export.HtmlExport.OnWrittenData += CSVExport_OnWrittenData; Export.HtmlExport.ExportToHTML(_dsExecutedData.Tables[0], txtFilePath.Text, format); #region Not used //StringBuilder sbCss = new StringBuilder(); //StringBuilder sbHtml = new StringBuilder(); //bool isAltSet = false; //sbCss.Append(""); //this.SetStatusText = "Created style for html"; //sbHtml.Append(""); //sbHtml.Append("Export from " + _dsExecutedData.Tables[0].TableName + ""); //sbHtml.Append(sbCss.ToString()); //sbHtml.Append(""); //sbHtml.Append(""); //int fields = this.GetFieldCount; //sbHtml.Append(""); //for (int i = 0; i < fields; i++) //{ // sbHtml.Append(string.Format("", _dsExecutedData.Tables[0].Columns[i].ColumnName)); // this.SetStatusText = "Writing column name " + i.ToString(); //} //sbHtml.Append(""); //int Counter = 0; //foreach (DataRow dr in _dsExecutedData.Tables[0].Rows) //{ // sbHtml.Append(""); // for (int i = 0; i < fields; i++) // { // if (isAltSet) // { // sbHtml.Append(string.Format("", dr[i].ToString())); // } // else // { // sbHtml.Append(string.Format("", dr[i].ToString())); // } // } // Counter++; // this.SetStatusText = "Wring row " + Counter.ToString(); // sbHtml.Append(""); // if (isAltSet == false) // isAltSet = true; // else // isAltSet = false; //} //sbHtml.Append("
{0}
{0}{0}
"); //sbHtml.Append(""); //System.IO.TextWriter tw = new System.IO.StreamWriter(this.txtFilePath.Text); //tw.WriteLine(sbHtml.ToString()); //tw.Close(); //this.SetStatusText = "Finished exporting to html file"; #endregion } private void ExportCSV() { Export.CSVExport.OnWrittenData += CSVExport_OnWrittenData; Export.CSVExport.ExportToCSV(_dsExecutedData.Tables[0], txtFilePath.Text, chkRowNames.Checked); } private void CSVExport_OnWrittenData(string text) { SetStatusText = text; } private void ExportXml() { _dsExecutedData.Tables[0].WriteXml(txtFilePath.Text); SetStatusText = "Finished exporting to Xml file"; } private void btnCancel_Click(object sender, EventArgs e) { Close(); } private void rbtHtml_CheckedChanged(object sender, EventArgs e) { ChangeExtension("htm"); } private void ChangeExtension(string extension) { if (!string.IsNullOrEmpty(txtFilePath.Text)) { string p = txtFilePath.Text; int idx = p.LastIndexOf("."); p = p.Remove(idx); p = p + "." + extension; txtFilePath.Text = p; } } private void rbtCsv_CheckedChanged(object sender, EventArgs e) { ChangeExtension("csv"); } private void rbtXml_CheckedChanged(object sender, EventArgs e) { ChangeExtension("xml"); } } }