Попробуйте эту функцию передать путь к данным и файлам, куда вы хотите экспортировать
public void CreateCSVFile(ref DataTable dt, string strFilePath)
{
try
{
// Create the CSV file to which grid data will be exported.
StreamWriter sw = new StreamWriter(strFilePath, false);
// First we will write the headers.
//DataTable dt = m_dsProducts.Tables[0];
int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
sw.Write(dt.Columns[i]);
if (i < iColCount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
// Now write all the rows.
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < iColCount; i++)
{
if (!Convert.IsDBNull(dr[i]))
{
sw.Write(dr[i].ToString());
}
if (i < iColCount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
}
sw.Close();
}
catch (Exception ex)
{
throw ex;
}
}
Я знаю о двух способах сделать это. Необычный путь состоит в том, чтобы записать, окна окружают расширение, которое является, как powerarchiver, winzip и т.д. делают это, я верю (это включает рабочий код для определения то, что объекты контекстного меню будут зависеть от выбранного файла).
простой путь, для простой функциональности, является Вами, может добавить запись в реестре:
HKEY_CLASSES_ROOT\<file type>\shell\<display text>\command
, Где <file type>
файлы, что это контекстное меню должно относиться т.е. *, .mdb, .doc
и
<display text>
, что Вы хотите показать в контекстном меню.
Тогда добавляют строку по умолчанию как путь к приложению, которое Вы хотите запустить из контекстного меню, и можно использовать %1 для обращения к в настоящее время выбираемому файлу, т.е. для Доступа MS я использую:
HKEY_CLASSES_ROOT\*\shell\MS Access 2000\command
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "%1"
Это тогда добавляет объект контекстного меню для любого файла, который я выбираю (следовательно *), который позволяет мне запускать его в Access 2000 MS.
, Конечно, всегда создавайте резервную копию своего реестра прежде, чем взломать его.
Ваша программа могла сделать это во время установки, или на первом показе.