Atul Rokade Ответов: 1

Как создать отчет dail без использования всплывающего окна save


Привет всем я создаю там одно приложение я хочу показать ежедневный отчет должен быть загружен в определенное время я также написал код но он не будет работать
На самом деле то что я хочу отчет должен загружаться автоматически в указанное время

Что я уже пробовал:

На бланке загрузки я написал
 private void Form3_Load(object sender, EventArgs e)
        {
             if((DateTime.Now==DateTime.Today) &&(DateTime.Now.Hour==22) &&(DateTime.Now.Minute==00))
            {
                report_data();
            }
}

сделанный метод report_data
private void report_data()
      {
          OleDbConnection cnn = new OleDbConnection();
          string sql = null;
          string data = null;
          int i = 0;
          int j = 0;

          Excel.Application xlApp;
          Excel.Workbook xlWorkBook;
          Excel.Worksheet xlWorkSheet;
          object misValue = System.Reflection.Missing.Value;

          xlApp = new Excel.Application();
          xlWorkBook = xlApp.Workbooks.Add(misValue);
          xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
          string connectionString = null;
          connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;
          cnn.ConnectionString = connectionString;
          cnn.Open();
          sql = "SELECT User_name,Sales_count from LOGIN  order by User_ID desc";
          OleDbDataAdapter dscmd = new OleDbDataAdapter(sql, cnn);
          DataSet ds = new DataSet();
          dscmd.Fill(ds);
          cnn.Close();

          for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
          {

              for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
              {
                  xlWorkSheet.Cells[1, j + 1] = ds.Tables[0].Columns[j].Caption;
                  data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
                  xlWorkSheet.Cells[i + 2, j + 1] = data;
              }
          }

          System.Windows.Forms.SaveFileDialog saveDlg = new System.Windows.Forms.SaveFileDialog();
          saveDlg.InitialDirectory = @"C:\";
          saveDlg.Filter = "Excel files (*.xls)|*.xls";
          saveDlg.FilterIndex = 0;
          saveDlg.RestoreDirectory = true;
          saveDlg.Title = "Export Excel File To";
          xlWorkBook.Close(true, misValue, misValue);
          //xlWorkSheet.Name = "Daily_report" + DateTime.Now.ToString("ddMMyyyHHmmss"
          MessageBox.Show("File Downloaded successfully...");
          xlApp.Quit();
          releaseObject(xlWorkSheet);
          releaseObject(xlWorkBook);
          releaseObject(xlApp);

      }

Richard Deeming

Ваш пример кода является неполным - он никогда не показывает SaveFileDialog, и он никогда не сохраняет книгу Excel.

Если вы хотите сохранить книгу по предопределенному пути без отображения диалогового окна, то удалите SaveFileDialog код, и просто передайте заранее определенный путь к Save метод.

Maciej Los

Вы пробовали использовать планировщик задач для ОС Windows? Видеть: Использование планировщика задач

1 Ответов

Рейтинг:
2

Maciej Los

Я бы предложил создать task for windows scheduler, который может запускать ваше приложение в любое время, а не проверять время в вашем приложении.

Для получения более подробной информации, пожалуйста, смотрите: Schtasks: Управленческие Услуги[^]

Итак, измените свое приложение для запуска report_data подпрограмма и когда отчет закончен, приложение завершает работу само.