求教:生成用C#生成Excel文件的原理,讲一下思路。
能不能讲下
public Excel.Application app;
public Excel.Workbooks wbs;
public Excel.Workbook wb;
public Excel.Worksheets wss;
public Excel.Worksheet ws;
他们之间的关系。
我想生成一个有多个Sheet的Excle文件,然后保存的服务器端供下载。

解决方案 »

  1.   

            /// <summary>
            /// datatable到Excel
            /// </summary>
            /// <param name="dt">DataTable</param>
            public static void DataTableToExcel(DataTable dt)
            {
                if (dt.Rows.Count == 0) return;
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbooks workbooks = excel.Workbooks;
                Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
                Microsoft.Office.Interop.Excel.Sheets worksheets = workbook.Worksheets;
                Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)worksheets.get_Item(1);
                excel.Visible = true;            Microsoft.Office.Interop.Excel.Range range;
                excel.Cells.Select();
                excel.Cells.RowHeight = 30;
                excel.Cells.Font.Size = 10;
                excel.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;            int rowPos = 2;
                range = excel.get_Range(sheet.Cells[rowPos, 1], sheet.Cells[rowPos, 1]);
                range.Select();            for (int i = 1; i <= dt.Columns.Count; i++)
                {
                    range = excel.get_Range(sheet.Cells[rowPos, i], sheet.Cells[rowPos, i]);
                    range.Borders.LineStyle = 1;
                    range.Font.Name = "华文仿宋";
                    range.Font.Size = 16;
                    range.Font.Bold = true;
                    range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                    range.ColumnWidth = 18;
                    sheet.Cells[rowPos, i] = dt.Columns[i - 1].ColumnName.ToString();
                }
                rowPos++;            foreach (DataRow dr in dt.Rows)
                {
                    for (int i = 1; i <= dt.Columns.Count; ++i)
                    {
                        range = excel.get_Range(sheet.Cells[rowPos, i], sheet.Cells[rowPos, i]);
                        range.Borders.LineStyle = 1;
                        range.Font.Name = "华文仿宋";
                        range.Font.Size = 12;
                        range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                        sheet.Cells[rowPos, i] = dr[i - 1].ToString();
                    }
                    rowPos++;
                }        }
      

  2.   

     Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();   Workbook work = excel.Workbooks.Add(true); //创建一个Excel
        Worksheet sheet = (Worksheet)work.Worksheets.Add(Type.Missing, Type.Missing, 1, Type.Missing);//添加一个sheet
      sheet.Cells[1, 1] = "申请人"; //第一行第一列
      sheet.Cells[1, 2] = "产业类型";//第一行第二列
    Worksheet sheetZiJI = work.Worksheets["Sheet1"] as Worksheet;
    //这个是Excel新建默认的sheet1
    sheet.name 可以改名字  work.SaveAs("D:\\1.xls", XlFileFormat.xlExcel7, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
              
                work.Close(false, null, null);
                excel.Quit();
      

  3.   


    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    Workbook xlBook = xlApp.Workbooks.Add(true);第一个sheet
      Worksheet wsMask = (Worksheet)xlBook.Worksheets["sheet1"];
      wsMask.Columns.ColumnWidth = 2;
      wsMask.Columns.RowHeight = 13.5;
      wsMask.Name = "1";第二个sheet Worksheet wsElement = (Worksheet)xlBook.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
     wsElement.Name = "2";第三个sheet Worksheet wsElement2 = (Worksheet)xlBook.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
     wsElement2.Name = "3";。保存成07的 xlBook.SaveAs(outputFileName, 56, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);保存成03的 
     xlBook.SaveAs(outputFileName, 43, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
      

  4.   


    怎么分别在每个sheet中填入数据呢?