0

我一直在努力,但我的 excel 表没有按照我的预期填充。如果内容具有字符串数据类型,那么工作表将显示“0”代替它,无论我如何努力使用转换。如果有人可以帮助我,我将在下面粘贴我的代码:

  public static void WriteExcelDocument(string FilePath)
    {
        try
        {
            using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(FilePath, true))
            {
                WorkbookPart workbookPart = spreadSheet.WorkbookPart;
                IEnumerable<Sheet> Sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>().Where(s => s.Name == "data");
                if (Sheets.Count() == 0)
                {
                    // The specified worksheet does not exist. 
                    return;
                }
                string relationshipId = Sheets.First().Id.Value;
                WorksheetPart worksheetPart = (WorksheetPart)spreadSheet.WorkbookPart.GetPartById(relationshipId);
                SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
                int index = 2;
                SpectrumNewEntities context = new SpectrumNewEntities();
                var q = from result in context.Appraisers
                        select result;
                foreach (var g in q)
                {
                    string Name = g.AppraiserName!=null?g.AppraiserName:String.Empty;
                    string city = g.City != null ? g.City : String.Empty;
                    string Address = g.Address != null ? g.Address : "NA";
                    int AppId = g.AppraiserAppraiserCompanyId != null ? (int)g.AppraiserAppraiserCompanyId : 0;
                    string email = g.Email != null ? g.Email : String.Empty;
                    Row contentRow = CreateContentRow(index, Name, city, Address, AppId,email);
                    index++;
                    sheetData.AppendChild(contentRow);
                }
                // Save the worksheet.
                worksheetPart.Worksheet.Save();
            }
        }
        catch (Exception)
        {

            throw;
        }
    }

    private static Row CreateContentRow(int index, string Name, string city, string Address, int AppId, string email)
    {
        try
        {
            //Create new row
            Row r = new Row();
            r.RowIndex = (UInt32)index;

            //First cell is a text cell, so create it and append it
            Cell firstCell = CreateTextCell(headerColumns[0], Name, index);
            r.AppendChild(firstCell);//

            //create cells that contain data
            for (int i = 1; i < headerColumns.Length; i++)
            {
                Cell c = new Cell();
                c.CellReference = headerColumns[i] + index;
                CellValue v = new CellValue();
                if (i == 1)
                {
                    v.Text = city.ToString();
                }
                if (i == 2)
                {
                    v.Text = Address.ToString();
                }
                if (i == 3)
                {
                    v.Text =AppId.ToString();
                }
                if (i == 4)
                {
                    v.Text = email.ToString();
                }
                c.AppendChild(v);
                r.AppendChild(c);

            }
            return r;
        }
        catch (Exception)
        {

            throw;
        }
    }
    private static Cell CreateTextCell(string header, string Name,int index)
    {
        try
        {
            //Create a new inline string cell
            Cell c = new Cell();
            c.DataType = CellValues.InlineString;
            c.CellReference = header + index;

            //Add text to text cell
            InlineString inlineString = new InlineString();
            Text t = new Text();
            t.Text = Name;
            inlineString.AppendChild(t);
            c.AppendChild(inlineString);
            return c;
        }
        catch (Exception)
        {

            throw;
        }
    }

我不明白为什么显示是这样的? 在此处输入图像描述

4

1 回答 1

0

使用CreateTextCell方法将所有文本单元格添加到行中;Name就像您为该领域所做的那样。

于 2012-12-27T09:10:53.930 回答