Экспорт содержимого ListView в Excel? - PullRequest
1 голос
/ 24 ноября 2011

Я пытался экспортировать данные содержимого моего элемента управления ListView в приложение Excel с использованием C #.Я уже делал это перед использованием VB.NET, и я попытался преобразовать свой код в C #, но это не удалось, но я внес в него изменения и, кажется, все хорошо в приведенном ниже коде, за исключением последней части, чтобы сохранить данные какфайл Excel.Мне нужна помощь, чтобы правильно изменить этот код.Я был бы очень признателен за ваш полезный ответ.

Приведенный ниже код с ошибкой:

oBook.SaveAs(SaveFileDialog1.InitialDirectory.ToString() + SaveFileDialog1.FileName);

Ошибка 5 Нет перегрузки для метода «SaveAs» принимает аргументы «1»

private void Button4_Click(object sender, System.EventArgs e)
{
    int row = 0;
    int col = 0;
    int row2 = 0;
    int col2 = 0;
    int ch = 0;
    int ctr = 0;

    ctr = 0;
    row2 = 1;
    col2 = 3;

    row = 3;
    col = 3;

    Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application();
    oExcel.Visible = false;
    Microsoft.Office.Interop.Excel.Workbook oBook = oExcel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);
    Microsoft.Office.Interop.Excel.Worksheet oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oExcel.ActiveSheet;


    SaveFileDialog SaveFileDialog1 = new SaveFileDialog();
    SaveFileDialog1.Filter = "Excel File|*.xlsx|Word File|*.doc|Text File|*.txt";
    SaveFileDialog1.Title = "Save As";

    if (SaveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
         switch (SaveFileDialog1.FilterIndex)
         {
            case 1:
            {
                for (ch = 1; ch <= ListView1.Columns.Count; ch++)
                {
                    oSheet.Cells[row2, col2] = ListView1.Columns[ctr].Text;

                    col2 = col2 + 1;
                    ctr = ctr + 1;
                }

                foreach (ListViewItem lview in ListView1.Items)
                {
                    foreach (ListViewItem.ListViewSubItem lview2 in lview.SubItems)
                    {
                        oSheet.Cells[row, col] = lview2.Text;
                        col = col + 1;
                    }

                    col = 3;
                    row = row + 1;
                }

                oBook.SaveAs(SaveFileDialog1.InitialDirectory.ToString() + SaveFileDialog1.FileName);
                oExcel.Quit();
                SaveFileDialog1.Dispose();
                MessageBox.Show("Data has been successfully saved", string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Information);
                break;
            }
         }

1 Ответ

0 голосов
/ 28 ноября 2011

Рабочая книга SaveAs метод принимает 11 параметров. В C # вы должны передать что-то для этих необязательных параметров, даже если вы не заботитесь о них. Самое легкое, что можно сделать здесь - это пропустить System.Reflection.Missing.Value для тех, кто вам не безразличен. Хотя это боль.

...