如何使用C#创建Excel电子表格而不需要在运行代码的计算机上安装Excel?


当前回答

OpenXML也是一个很好的选择,它有助于避免在服务器上安装MS Excel。Microsoft提供的Open XML SDK 2.0简化了操作Open XML包和包中的底层Open XML架构元素的任务。开放式XML应用程序编程接口(API)封装了开发人员在开放式XML包上执行的许多常见任务。

看看OpenXML:有助于避免在服务器上安装MS Excel的替代方案

其他回答

使用Open XML SDK 2.0 for Microsoft Office怎么样?

一些好处:

不需要安装Office由Microsoft制作=像样的MSDN文档只有一个.Net dll可用于项目SDK附带了许多工具,如diff、验证器等

链接:

githubMSDN主登录“How Do I…”起始页blogsMSDN brian_jones发布SDKblogs.MSDN brian_jones描述SDK处理大型文件而不崩溃(与DOM方法不同)

如果您从代码中创建数据表或数据网格视图,则可以使用此简单方法保存所有数据。不建议使用此方法,但它可以100%工作,即使您没有在计算机中安装MS Excel。

try
 {
  SaveFileDialog saveFileDialog1 = new SaveFileDialog();
  saveFileDialog1.Filter = "Excel Documents (*.xls)|*.xls";
  saveFileDialog1.FileName = "Employee Details.xls";
  if (saveFileDialog1.ShowDialog() == DialogResult.OK)
  {
  string fname = saveFileDialog1.FileName;
  StreamWriter wr = new StreamWriter(fname);
  for (int i = 0; i <DataTable.Columns.Count; i++)
  {
  wr.Write(DataTable.Columns[i].ToString().ToUpper() + "\t");
  }
  wr.WriteLine();

  //write rows to excel file
  for (int i = 0; i < (DataTable.Rows.Count); i++)
  {
  for (int j = 0; j < DataTable.Columns.Count; j++)
  {
  if (DataTable.Rows[i][j] != null)
  {
  wr.Write(Convert.ToString(getallData.Rows[i][j]) + "\t");
  }
   else
   {
   wr.Write("\t");
   }
   }
   //go to next line
   wr.WriteLine();
   }
   //close file
   wr.Close();
   }
   }
   catch (Exception)
   {
    MessageBox.Show("Error Create Excel Sheet!");
   }

商业解决方案SpreadsheetGearfor.NET将做到这一点。

您可以在此处查看ASP.NET(C#和VB)的实时示例,并在此处下载评估版本。

免责声明:我拥有SpreadsheetGear LLC

我正在使用以下代码创建excel 2007文件,该文件创建了该文件并写入该文件,但当我打开该文件时,它给我的错误是exel无法打开文件bcz文件可能已损坏或文件扩展名不兼容。但如果我使用.xls作为文件,它可以工作

for (int i = 0; i < TotalFile; i++)
{
    Contact.Clear();
    if (innerloop == SplitSize)
    {
        for (int j = 0; j < SplitSize; j++)
        {
            string strContact = DSt.Tables[0].Rows[i * SplitSize + j][0].ToString();
            Contact.Add(strContact);
        }
        string strExcel = strFileName + "_" + i.ToString() + ".xlsx";
                         File.WriteAllLines(strExcel, Contact.ToArray());
    }
}

也参考链接

http://dotnet-magic.blogspot.in/2011/10/createformat-excel-file-from-cnet.html

我找到了另一个没有太多依赖性的库:MiniExcel。

您可以使用DataTables作为电子表格创建数据集(表格的名称是电子表格的名称),并通过以下方式将其保存到.xlsx文件

using var stream = File.Create(filePath);
stream.SaveAs(dataSet);

or

MiniExcel.SaveAs(filePath, dataSet);

它还提供Excel文件的读取,并支持CSV文件的读取和写入。