Создание и сохранение файла Excel - PullRequest
2 голосов
/ 29 апреля 2010

У меня есть следующий код, который создает новый файл Excel в моем коде C # позади. Когда я пытаюсь сохранить файл, я бы хотел, чтобы пользователь выбрал место сохранения.

В методе № 1 я могу сохранить файл, используя книгу SaveCopyAs, не запрашивая у пользователя местоположение. Это сохраняет один файл в каталог C: \ Temp.

Метод # 2 сохранит файл в моей папке Users \ Documents, затем предложит пользователю выбрать местоположение и сохранить вторую копию. Как я могу исключить сохранение первой копии в папке Users \ Documents?

Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
Excel.Range oRng;

try
{
    //Start Excel and get Application object.
    oXL = new Excel.Application();
    oXL.Visible = false;

    //Get a new workbook.
    oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
    oSheet = (Excel._Worksheet)oWB.ActiveSheet;

    // *****
    oSheet.Cells[2, 6] = "Ship To:";
    oSheet.get_Range("F2", "F2").Font.Bold = true;

    oSheet.Cells[2, 7] = sShipToName;
    oSheet.Cells[3, 7] = sAddress;
    oSheet.Cells[4, 7] = sCityStateZip;
    oSheet.Cells[5, 7] = sContactName;
    oSheet.Cells[6, 7] = sContactPhone;

    oSheet.Cells[9, 1] = "Shipment No:";
    oSheet.get_Range("A9", "A9").Font.Bold = true;
    oSheet.Cells[9, 2] = sJobNumber;

    oSheet.Cells[9, 6] = "Courier:";
    oSheet.get_Range("F9", "F9").Font.Bold = true;
    oSheet.Cells[9, 7] = sCarrierName;

    oSheet.Cells[11, 1] = "Requested Delivery Date:";
    oSheet.get_Range("A11", "A11").Font.Bold = true;
    oSheet.Cells[11, 2] = sRequestDeliveryDate;

    oSheet.Cells[11, 6] = "Courier Acct No:";
    oSheet.get_Range("F11", "F11").Font.Bold = true;
    oSheet.Cells[11, 7] = sCarrierAcctNum;
    // *****

    Method #1
    //oWB.SaveCopyAs(@"C:\Temp\" + sJobNumber +".xls");

    Method #2
    oXL.SaveWorkspace(sJobNumber + ".xls");
}
catch (Exception theException)
{
    String errorMessage;
    errorMessage = "Error: ";
    errorMessage = String.Concat(errorMessage, theException.Message);
    errorMessage = String.Concat(errorMessage, " Line: ");
    errorMessage = String.Concat(errorMessage, theException.Source);
}

Ответы [ 4 ]

3 голосов
/ 29 апреля 2010

Используйте класс SaveFileDialog для получения желаемого пути от пользователя:

http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx

3 голосов
/ 29 апреля 2010

Вы можете использовать savefiledialog и позволить пользователю выбрать свое местоположение, затем вы можете использовать это местоположение, когда вы вызываете oWB.SaveCopyAs (userselectedlocation)

1 голос
/ 29 апреля 2010

Почему вы не используете SaveFileDialog? См. Как: сохранять файлы с помощью компонента SaveFileDialog

- EDIT -

Если это приложение asp.net, тогда это обсуждение может помочь создать диалоговое окно сохранения файла.

0 голосов
/ 04 апреля 2019

Вы можете попробовать это. Я пытался, и у меня это сработало

oWB.SaveAs(@"C:\Temp\" + "test" + ".xlsx");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...