Click here to Skip to main content
15,888,330 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I am creating an excel file using
Microsoft.Office.Interop.Excel;


and filling up the excel sheet using the data from database(SQLite).

All things are working perfectly,only problem is that the data inside the cell
is like

1001 1002 1003 1004
1 6/15/2018 3:34:20 101 <---><---><---><---> -->Leaving the extra space here.


can anyone please found out what is the problem with code causing these?

What I have tried:

public void ExportToExcel()
      {
          DirectoryInfo di = System.IO.Directory.CreateDirectory("C:\\ProgramData\\tthhSensorCalibrator");
          string logFilename = System.IO.Path.Combine(Environment.GetFolderPath(
            Environment.SpecialFolder.CommonApplicationData), di + "\\databaseFile.db3");
          System.Data.SQLite.SQLiteConnection con = new System.Data.SQLite.SQLiteConnection(@"Data source="+ logFilename);
          System.Data.SQLite.SQLiteCommand com = new System.Data.SQLite.SQLiteCommand(con);
          com.CommandText = "Select * FROM Log";      // Select all rows from our database table

          int i = 0;
          int j = 0;
          string data = null;
          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);



          SQLiteDataAdapter dscmd = new SQLiteDataAdapter(com.CommandText, con);
          DataSet ds = new DataSet();
          dscmd.Fill(ds);



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

                  xlWorkSheet.Cells[i + 1, j + 1] = data;

              }
          }
          SaveFileDialog saveFileDialog1 = new SaveFileDialog();

          saveFileDialog1.InitialDirectory = @"Documents\";

          saveFileDialog1.Title = "Save text Files";

         // saveFileDialog1.CheckFileExists = true;

          //saveFileDialog1.CheckPathExists = true;

          saveFileDialog1.DefaultExt = "txt";

          saveFileDialog1.Filter = "Excel files (*.xls)|*.xls";

          saveFileDialog1.FilterIndex = 2;

          saveFileDialog1.RestoreDirectory = true;
          string filename="";
          if (saveFileDialog1.ShowDialog() == DialogResult.OK)

          {

              filename = saveFileDialog1.FileName;

          }
          xlWorkBook.SaveAs(filename, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);

          //xlWorkBook.SaveCopyAs(filename);
          xlWorkBook.Close(true, misValue, misValue);
          xlApp.Quit();

          releaseObject(xlWorkSheet);
          releaseObject(xlWorkBook);
          releaseObject(xlApp);

          MessageBox.Show("Excel file created");




          void releaseObject(object obj)
          {
              try
              {
                  System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                  obj = null;
              }
              catch (Exception ex)
              {
                  obj = null;
                  MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
              }
              finally
              {
                  GC.Collect();
              }
          }
      }

 }
Posted
Updated 15-Jun-18 0:51am

1 solution

Try that:
xlWorkSheet.Cells[i + 1, j + 1] = data.Trim();
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900