【问题标题】:how to write in excel cells using DataReader if a particular cell is "ReadOnly" using C#如果使用 C# 特定单元格是“只读”,如何使用 DataReader 在 excel 单元格中写入
【发布时间】:2009-07-01 09:15:34
【问题描述】:

我正在使用 DataReader 将数据写入 excelsheet 单元格。在单元格写入特权之前,我没有问题。但在一种情况下,只有一个单元格是只读的,其余单元格是可写的。

例如:10 * 10 个单元格,只有第一个单元格是只读的。所以,我应该离开这个单元格并将其写入其他单元格。但是使用数据读取器,它会一次写入整行.. 那么我如何使用 C# 来实现呢?

Team Leader (required) , , , , , , , , , 
, , , , , , , , , ,
, , , , , , , , , ,
, , , , , , , , , ,
, , , , , , , , , ,

所以,第一个单元格不应该由 datareader 写入。 请帮我做这件事

if (reader.HasRows)
{
    minRow = 0;
    minCol = 0;
    // Process each result in the result set
    while (reader.Read())
    {
        // Create an array big enough to hold the column values
        object[] values = new object[reader.FieldCount];
        // Add the array to the ArrayList
        rowList.Add(values);
        // Get the column values into the array
        reader.GetValues(values);
        int iValueIndex = 0;

        // If the Reading Format is by ColumnByColumn 
        if (CurTaskNode.ReadFormat == "ColumnbyColumn")
        {
            minCol = 0;
            //   minRow = 0;
            for (int iCol = 0; iCol < CurTaskNode.HeaderData.Length; iCol++)
            {
                // Checking whether the Header data exists or not
                if (CurTaskNode.HeaderData[minCol] != "")
                {
                    // Assigning the Value from reader to the particular cell in excel sheet                   
                    excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol] = values[iValueIndex];
                    iValueIndex++;
                }
                minCol++;
            }
            minRow++;
        }
    }
}

谢谢你, 撞锤

【问题讨论】:

    标签: c# .net readonly export-to-excel


    【解决方案1】:

    在谷歌上找到了这个,所以也许它有效/也许它没有: here, code looks the same as yours

    您可以使用范围的 AllowEdit 属性,以便您可以这样做:

    // Assigning the Value from reader to the particular cell in excel sheet      
    Excel.Range c = (Excel.Range)excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol];
    if (c.AllowEdit) c.Value2 = values[iValueIndex];
    

    而不是

    // Assigning the Value from reader to the particular cell in excel sheet                   
    excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol] = values[iValueIndex];
    

    【讨论】:

      【解决方案2】:

      我尝试了很多方法来弄清楚如何使用 C# 跳过写入到特定的 Excel 单元格,但无法获得正确的逻辑。

      我的例如: 团队负责人(必填) abcxyz User1 user2 客户界面焦点 dfgidf user23 user3

      上面的每个名字都必须在一个特定的单元格中......但是在 excel 模板中,第一个单元格(团队负责人(必需))是只读的,所以我不能写入那个单元格,所以我的最终 excel 表应该显示

                                  abcxyz  User1   user2
      Customer Interface Focal    dfgidf  user23  user3.....
      .....
      

      我为此尝试了各种逻辑...请参阅下面的代码

      Microsoft.Office.Interop.Excel.Workbook SelWorkBook = excelappln1.Workbooks.Open(
          curfile,
          0, false, 5, "", "", false,
          Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
          "", true,
          false, 0, false, false, false);
      
      Microsoft.Office.Interop.Excel.Sheets excelSheets = SelWorkBook.Worksheets;
      Microsoft.Office.Interop.Excel.Worksheet excelworksheet =(Microsoft.Office.Interop.Excel.Worksheet)excelSheets.get_Item(CurSheetName);
      
      Microsoft.Office.Interop.Excel.Range excelRange = excelworksheet.UsedRange;
      
      if ((!excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol]).Locked)
      {
          // Assigning the Value from reader to the particular cell in excel sheet 
          excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL +      minCol] = values[iValueIndex];
          iValueIndex++;
      }
      

      但在 if 语句中显示错误 错误 1 ​​运算符 '!'不能应用于“对象”类型的操作数

      所以,请说一下如何处理这种情况。

      谢谢 撞锤

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-22
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 2018-10-08
        • 2021-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多