ListView导出Excel, 并实现数据追加

 

public void ExportToExcel(ListView L_ListMember,ListView L_ListCN_Trade) 
{
                string saveFileName = "";   
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.DefaultExt = "xls";
                saveDialog.Filter = "Excel(*.xls)|*.xls";
                if (saveDialog.ShowDialog() == DialogResult.OK)
                {
                    saveFileName = saveDialog.FileName;
                    Excel.Application xlApp = new Excel.Application();
                    if (xlApp == null)
                    {
                        MessageBox.Show("无法创建Excel对象,可能您的机器未安装Excel");
                        return;
                    }

                    Excel.Workbooks workbooks = xlApp.Workbooks;
                    Excel.Workbook workbook = workbooks.Add(true);
                    Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
                    xlApp.Visible = false;
                    int rowIdx = 1;//行索引(第一行)

                    #region 1.导出第一批数据
                    #region 表头
                    for (int i = 0; i < L_ListMember.Columns.Count; i++)
                    {
                        worksheet.Cells[rowIdx, i + 1] = L_ListMember.Columns[i].Text.ToString();
                        ((Excel.Range)worksheet.Cells[rowIdx, i + 1]).Font.Bold = true;
                    }
                    #endregion

                    #region 数据行
                    for (int i = 0; i < L_ListMember.Items.Count; i++)
                    {
                        rowIdx++;//指向下一行
                        for (int j = 0; j < L_ListMember.Columns.Count; j++)
                        {
                            if (j == 0)
                            {
                                worksheet.Cells[rowIdx, j + 1] = L_ListMember.Items[i].Text.ToString();
                                ((Excel.Range)worksheet.Cells[rowIdx, j + 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                            }
                            else
                            {
                                worksheet.Cells[rowIdx, j + 1] = L_ListMember.Items[i].SubItems[j].Text.ToString();
                                ((Excel.Range)worksheet.Cells[rowIdx, j + 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                            }
                        }
                    }
                    #endregion
                    #endregion


                    #region 2.导出第二批数据,实现数据追加
                    if (L_ListCN_Trade.Items.Count > 0)
                    {
                        #region 表头

                        rowIdx = rowIdx + 3;//间隔两行再追加数据
                        for (int i = 0; i < L_ListCN_Trade.Columns.Count; i++)
                        {
                            worksheet.Cells[rowIdx, i + 1] = L_ListCN_Trade.Columns[i].Text.ToString();
                            ((Excel.Range)worksheet.Cells[rowIdx, i + 1]).Font.Bold = true;
                        }
                        #endregion

                        #region 数据行
                        for (int i = 0; i < L_ListCN_Trade.Items.Count; i++)
                        {
                            rowIdx++;//指向下一行
                            for (int j = 0; j < L_ListCN_Trade.Columns.Count; j++)
                            {
                                if (j == 0)
                                {
                                    worksheet.Cells[rowIdx, j + 1] = L_ListCN_Trade.Items[i].Text.ToString();
                                    ((Excel.Range)worksheet.Cells[rowIdx, j + 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                                }
                                else
                                {
                                    worksheet.Cells[rowIdx, j + 1] = L_ListCN_Trade.Items[i].SubItems[j].Text.ToString();
                                    ((Excel.Range)worksheet.Cells[rowIdx, j + 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                                }
                            }
                        }
                        #endregion
                    }
                    #endregion


                    #region 保存Excel
                    object missing = System.Reflection.Missing.Value;
                    try
                    {
                        workbook.Saved = true;
                        workbook.SaveAs(saveFileName, Excel.XlFileFormat.xlXMLSpreadsheet, missing, missing, false, false, Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
                        MessageBox.Show("导出成功!");
                    }
                    catch (Exception e1)
                    {
                        MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + e1.Message);
                    }
                    finally
                    {
                        xlApp.Quit();
                        System.GC.Collect();
                    }
                    #endregion
                }
}

posted @ 2008-10-29 17:06  suki  阅读(1396)  评论(0编辑  收藏  举报