Я хочу экспортировать данные из базы данных доступа в файл Excel.Но я получил исключение из HRESULT: ошибка 0x800A03EC.
Вот фрагмент кода, который я написал,
using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
private void showBtn_Click(object sender, EventArgs e)
{
int cnt = -1;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
OleDbConnection thisConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\AyumiDB1.mdb");
thisConnection.Open();
OleDbCommand thisCommand = thisConnection.CreateCommand();
thisCommand.CommandText = "SELECT CodeNumber, Particular, LF, DebitCredit, Amount FROM JournalVoucher";
OleDbDataReader thisReader = thisCommand.ExecuteReader();
while (thisReader.Read())
{
cnt++;
MessageBox.Show(thisReader["CodeNumber"].GetType().ToString());
xlWorkSheet.Cells[cnt, 1] = thisReader["CodeNumber"].ToString();
xlWorkSheet.Cells[cnt, 2] = thisReader["Particular"].ToString();
xlWorkSheet.Cells[cnt, 3] = thisReader["LF"].ToString();
xlWorkSheet.Cells[cnt, 4] = thisReader["DebitCredit"].ToString();
xlWorkSheet.Cells[cnt, 5] = thisReader["Amount"].ToString();
}
thisReader.Close();
thisConnection.Close();
xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
}
private 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();
}
}
Моя проблема -
MessageBox.Show(thisReader["CodeNumber"].GetType().ToString());
отлично, но когда я пытался вставить то же значение в ячейку Excel с
xlWorkSheet.Cells[cnt, 1] = thisReader["CodeNumber"].ToString();
, тогда выдается исключение.
Я делаю что-то не так ??
Спасибо