首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Open XML SDK将双精度值写入Excel单元格

Open XML SDK是一个用于创建、读取和修改Office文档(如Excel、Word和PowerPoint)的开发工具包。它提供了一组API,使开发人员能够以编程方式生成和操作Office文档。

在使用Open XML SDK将双精度值写入Excel单元格时,可以按照以下步骤进行操作:

  1. 引用Open XML SDK库:首先,需要在项目中引用Open XML SDK库。可以通过NuGet包管理器来安装Open XML SDK。
  2. 创建Excel文档:使用Open XML SDK,可以创建一个新的Excel文档或打开现有的Excel文档。
  3. 定位到目标单元格:使用Open XML SDK,可以通过指定单元格的行和列索引来定位到目标单元格。
  4. 设置单元格值:使用Open XML SDK,可以将双精度值设置为目标单元格的值。可以使用CellValues.Double类型来表示双精度值。
  5. 保存Excel文档:使用Open XML SDK,可以将修改后的Excel文档保存到指定的文件路径或流中。

以下是一个示例代码,演示了如何使用Open XML SDK将双精度值写入Excel单元格:

代码语言:txt
复制
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

public void WriteDoubleValueToExcelCell(string filePath, string sheetName, int rowIndex, int columnIndex, double value)
{
    using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(filePath, true))
    {
        WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
        Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault(s => s.Name == sheetName);
        WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id);

        Cell cell = GetOrCreateCell(worksheetPart.Worksheet, columnIndex, rowIndex);
        cell.DataType = CellValues.Number;
        cell.CellValue = new CellValue(value.ToString());

        worksheetPart.Worksheet.Save();
    }
}

private Cell GetOrCreateCell(Worksheet worksheet, int columnIndex, int rowIndex)
{
    Row row = worksheet.GetOrCreateRow(rowIndex);
    Cell cell = row.GetOrCreateCell(columnIndex);
    return cell;
}

private Row GetOrCreateRow(this Worksheet worksheet, int rowIndex)
{
    Row row = worksheet.GetFirstChild<SheetData>().Elements<Row>().FirstOrDefault(r => r.RowIndex == rowIndex);
    if (row == null)
    {
        row = new Row() { RowIndex = rowIndex };
        worksheet.GetFirstChild<SheetData>().Append(row);
    }
    return row;
}

private Cell GetOrCreateCell(this Row row, int columnIndex)
{
    Cell cell = row.Elements<Cell>().FirstOrDefault(c => c.CellReference.Value == GetCellReference(columnIndex, row.RowIndex));
    if (cell == null)
    {
        cell = new Cell() { CellReference = GetCellReference(columnIndex, row.RowIndex) };
        row.Append(cell);
    }
    return cell;
}

private string GetCellReference(int columnIndex, int rowIndex)
{
    return $"{GetColumnName(columnIndex)}{rowIndex}";
}

private string GetColumnName(int columnIndex)
{
    int dividend = columnIndex;
    string columnName = string.Empty;
    int modulo;

    while (dividend > 0)
    {
        modulo = (dividend - 1) % 26;
        columnName = Convert.ToChar(65 + modulo) + columnName;
        dividend = (dividend - modulo) / 26;
    }

    return columnName;
}

这是一个简单的示例,它将双精度值写入指定的Excel单元格。你可以根据实际需求进行修改和扩展。

腾讯云提供了一系列与Excel相关的产品和服务,例如腾讯云对象存储(COS)用于存储Excel文件,腾讯云函数计算(SCF)用于处理Excel文件的后台计算任务等。你可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用NPOI生成Excel级联列表

很久没发博客了,因为实在是太忙了(请允许我找个借口)。最近沉淀了很多内容,当然很多都差不多忘记了,不过我还是会在有时间的前提下逐步一一道来吧。最近做了一个批量下单的模板导出,因为订单中有商品大类和小类的概念,而且类型非常多,为了方便用户选择以及确保数据的合法性,因此级联选择势在必行。不过,在此之前,本人就算是在Excel中操作都不会设置下拉,跟别说级联下拉了,并且关于使用代码生成级联下拉这块,网上并没有相关的可以值得借鉴的内容,但是无论如何,Excel小白还是要挑战挑战的。折腾了一下午,总算搞定,而且顺便学会了Excel中的序列和级联。还是挺有成就感的。鉴于网上这块有价值的内容不多,于是在此分享此内容以及相关核心代码。

02

Node.js 小打小闹之Excel解析

近期公司开始做绩效,某一天上午 HR 妹纸发了份 Excel 模板过来,让我下发给小组内成员填写。当天下午下班前,组内的绩效表就收齐了,接下来我就开始进入下一个环节,逐一打开每个 Excel 表为每个人打分。由于只有十几份绩效表,所以很快就打完分了。 不过问题来了,虽然已经打完分了,但我对小组内成员的每个考核项得分和总分的情况却还是一片空白。想要一目了然,当然得简单做个统计报表咯。那么如何收集每个人的数据呢?当然最简单的方式就一个个打开组内成员的绩效表,然后一个个统计,不过对于这种方式,我是拒绝的。作为一个小小的程序猿,还是得施展一下雕虫小技 —— “自动提取数据”。

02
领券