2011-11-24 86 views
1

我一直在试图将我的ListView控件的内容数据导出到使用C#的Excel应用程序中。我已经在使用VB.NET之前完成了这个工作,我尝试将我的代码转换为C#,但是它失败了,但我对它进行了修改,似乎下面的代码中的一切都很好,除了最后一部分将数据保存为excel文件。我需要帮助才能正确修改此代码。我将非常感谢您的有益回应。将ListView内容导出到Excel?

低于该代码得到一个错误是:

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

错误5没有过载的方法为 '另存为' 取 '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; 
      } 
     } 

回答

0

工作簿SaveAs方法需要11个参数。在C#中,即使您不关心它们,也必须为这些可选参数传递一些信息。最简单的事情就是通过System.Reflection.Missing.Value为那些你不关心的人。尽管这是一个痛苦。