我导出数据时 Excel文件打不开。有一个问题是如果我选择2009年它能导出数据,而2009年以下,下载下来的Excel文件打开时却报那样的错。求解
 Worksheet sheet = sheets.Add("101");
            sheet.Table.DefaultRowHeight = 14.25F;
            sheet.Table.DefaultColumnWidth = 60.75F;
            sheet.Table.ExpandedColumnCount = objDataSet.Tables[0].Columns.Count > 0 ? objDataSet.Tables[0].Columns.Count : 10;//这个的长度为 :从2001到选择年份的年数+1;比如选2009年 那就是: 9+1=10;
            sheet.Table.ExpandedRowCount = 5 + objDataSet.Tables[0].Rows.Count;//这个长度可以当做36
            sheet.Table.FullColumns = 1;
            sheet.Table.FullRows = 1;
            sheet.Table.StyleID = "s68";
            WorksheetColumn column0 = sheet.Table.Columns.Add();
            column0.Width = 52;
            column0.StyleID = "s68";
            WorksheetColumn column1 = sheet.Table.Columns.Add();
            column1.Width = 48;
            column1.StyleID = "s68";
            column1.Span = 6;
            WorksheetColumn column2 = sheet.Table.Columns.Add();
            column2.Index = 9;
            column2.Width = 53;
            column2.StyleID = "s68";
            WorksheetColumn column3 = sheet.Table.Columns.Add();
            column3.Width = 48;
            column3.StyleID = "s68";
            // -----------------------------------------------
            WorksheetRow Row0 = sheet.Table.Rows.Add();
            Row0.Height = 21;
            Row0.AutoFitHeight = false;
            WorksheetCell cell;
            cell = Row0.Cells.Add();
            cell.StyleID = "s70";
            cell.Data.Type = DataType.String;
            cell.Data.Text = "年末实有房屋建筑面积(101)";
            cell.MergeAcross = sheet.Table.ExpandedColumnCount - 1;
            // -----------------------------------------------
            WorksheetRow Row1 = sheet.Table.Rows.Add();
            Row1.Height = 15;
            Row1.AutoFitHeight = false;
            for (int i = 1; i < sheet.Table.ExpandedColumnCount - 1; i++)
            {
                cell = Row1.Cells.Add();
                cell.StyleID = "s71";
            }
            cell = Row1.Cells.Add();
            cell.StyleID = "s74";
            cell.Data.Type = DataType.String;
            cell.Data.Text = "单位:万平方米";
            cell.MergeAcross = 1;
            // -----------------------------------------------
            WorksheetRow Row2 = sheet.Table.Rows.Add();
            Row2.AutoFitHeight = false;
            cell = Row2.Cells.Add();
            cell.StyleID = "m26499080";
            cell.Data.Type = DataType.String;
            cell.Data.Text = "地区";
            cell.MergeDown = 1;
            for (int i = 1; i < sheet.Table.ExpandedColumnCount; i++)
            {
                cell = Row2.Cells.Add();
                cell.StyleID = "m26499100";
                cell.Data.Type = DataType.String;
                cell.Data.Text = "200" + i + "年";
                cell.MergeDown = 1;
            }
            // -----------------------------------------------
            WorksheetRow Row3 = sheet.Table.Rows.Add();
            Row3.AutoFitHeight = false;            // -----------------------------------------------
            WorksheetRow Row4 = sheet.Table.Rows.Add();
            Row4.Height = 18;
            Row4.AutoFitHeight = false;
            Row4.Cells.Add("全国", DataType.String, "s91");            for (int i = 1; i < sheet.Table.ExpandedColumnCount; i++)
            {
                cell = Row4.Cells.Add();
                cell.StyleID = "s92";
                cell.Data.Type = DataType.Number;
                cell.Data.Text = "0";
                cell.Formula = "=SUM(R[1]C:R[31]C)";
            }            // -----------------------------------------------
            for (int i = 0; i < objDataSet.Tables["BuildingArea"].Rows.Count; i++)
            {//行的循环次数(从4开始到31)
                
                WorksheetRow Row5 = sheet.Table.Rows.Add();
                Row5.Height = 18;
                Row5.AutoFitHeight = false;
                Row5.Cells.Add(objDataSet.Tables["BuildingArea"].Rows[i][0].ToString(),DataType.String, "s91");
                for (int j = 1; j < sheet.Table.ExpandedColumnCount; j++)
                {
                    cell = Row5.Cells.Add(objDataSet.Tables["BuildingArea"].Rows[i][j].ToString(), DataType.Number, "s92");
                    cell.StyleID = "s92";
                }
            }
            //// -----------------------------------------------
            //WorksheetRow Row36 = sheet.Table.Rows.Add();
            //Row36.AutoFitHeight = false;
            //cell = Row36.Cells.Add();
            //cell.StyleID = "s93";
            //cell.Index = 6;
            //cell = Row36.Cells.Add();
            //cell.StyleID = "s93";
            //cell = Row36.Cells.Add();
            //cell.StyleID = "s93";
            //cell = Row36.Cells.Add();
            //cell.StyleID = "s93";
            //cell = Row36.Cells.Add();
            //cell.StyleID = "s93";            // -----------------------------------------------
            //  Options
            // -----------------------------------------------
            sheet.Options.ProtectObjects = false;
            sheet.Options.ProtectScenarios = false;
            sheet.Options.PageSetup.Layout.CenterHorizontal = true;
            sheet.Options.PageSetup.Layout.CenterVertical = true;
            sheet.Options.PageSetup.Header.Margin = 0.511811F;
            sheet.Options.PageSetup.Footer.Margin = 0.511811F;
            sheet.Options.PageSetup.PageMargins.Bottom = 0.7874016F;
            sheet.Options.PageSetup.PageMargins.Left = 0.3543307F;
            sheet.Options.PageSetup.PageMargins.Right = 0.7480315F;
            sheet.Options.PageSetup.PageMargins.Top = 0.7874016F;
            sheet.Options.Print.PaperSizeIndex = 9;
            sheet.Options.Print.ValidPrinterInfo = true;

解决方案 »

  1.   


    2009年excel文件和现在的excel文件后缀名一样吧?
      

  2.   

    是不是excel的文件本身就 不是一个版本了
      

  3.   

    我觉得应该是这个sheet.Table.ExpandedColumnCount长度哪里出问题了。。但是就是不知道在哪儿。 
    因为时间就影响这个长度。。
      

  4.   

    sheet.Table.ExpandedColumnCount
    好好分析一下
    再试试2010年,试试看能不能行。
      

  5.   

    不是,最后发现时因为WorksheetColumn的定义与实际长度有冲突。。 这个东西是一个转换Excel文件的工具,以前也没用过,不了解头痛了一天啊。