Экспорт отчета Crystal в Excel - укажите каталог - PullRequest
0 голосов
/ 30 августа 2018

У меня есть отчеты Crystal Reports (с использованием C #), которые я извлекаю и хочу экспортировать в Excel. Мне удается вытащить и экспортировать отчет просто отлично. Но в коде я вручную указываю каталог экспорта.

Код:

myEquipCalRPT.ExportToDisk(ExportFormatType.Excel, "C:\\Temp\\ReportName.xls");

Я знаю, что путь должен быть строковым значением. Как я могу спросить пользователя, куда он / она хочет экспортировать отчет (и дать ему имя) вместо того, чтобы вручную указывать путь в коде?

Я попытался использовать «SaveFileDialog» с кодом ниже, а затем я получил это исключение: « Дополнительная информация: формат данного пути не поддерживается. ». Это позволяет пользователю указать имя файла, хотя я заметил, что тип файла чуть ниже поля имени файла не задан, и у него нет типов для выбора.

SaveFileDialog browser = new SaveFileDialog();
string directoryPath = "";
ienter code here`f (browser.ShowDialog() == DialogResult.OK)
{
   directoryPath = browser.ToString(); // prints path
}
myEquipCalRPT.ExportToDisk(ExportFormatType.Excel, directoryPath);

Если я использую «FolderBrowserDialog», я получаю сообщение об ошибке: « Дополнительная информация: доступ к пути« C: \ Directory »запрещен. », который, как я подозреваю, связан только с указанием пути к каталогу , но без имени файла.

FolderBrowserDialog browser = new FolderBrowserDialog();
string directoryPath = "";

if (browser.ShowDialog() == DialogResult.OK)
{
    directoryPath = browser.SelectedPath; // prints path
}
myEquipCalRPT.ExportToDisk(ExportFormatType.Excel, directoryPath);

Если я попробую следующее, я не получу ошибку, но файл также не сохранится:

FolderBrowserDialog browser = new FolderBrowserDialog();
string directoryPath = "";
string FileName = "ExcelExport.xls";
string Path = directoryPath + FileName;

if (browser.ShowDialog() == DialogResult.OK)
{
directoryPath = browser.SelectedPath; // prints path
}

myEquipCalRPT.ExportToDisk(ExportFormatType.Excel, Path);

Кроме того, как я могу экспортировать в .xlsx вместо .xls? Я могу указать расширение в пути как .xlsx, но оно не хочет открываться. Необходимо убрать X в конце, чтобы он заработал.

1 Ответ

0 голосов
/ 31 августа 2018

Я получил этот код, чтобы получить правильный путь, поскольку путь был указан как "System.Windows.Forms.SaveFileDialog: Title:, Имя файла: C: \ Temp \ test.xls" а не "C: \ Temp \ test.xls" со всеми диалоговыми окнами.

            SaveFileDialog browser = new SaveFileDialog();
            string directoryPath = "";
            if (browser.ShowDialog() == DialogResult.OK)
            {
                directoryPath = browser.FileName.ToString();
            }

И вы можете использовать одну из этих строк для записи файла, в зависимости от того, как вы выбрали экспорт отчета:

myRPT.ExportToDisk(ExportFormatType.Excel, "C:\\Temp\\AMCMaintTempExcelReportFile.xls")

CrDiskFileDestinationOptions.DiskFileName = directoryPath;

myRPT.ExportToDisk(ExportFormatType.Excel, directoryPath);
...