我想在我的应用程序中添加将数据保存到XLS(旧的Excel文件)的功能。
我在ASP.NET here中看到过如何执行此操作的示例,但我不知道这如何转换为桌面应用程序的c#代码。
我还看了一下excel自动化,看起来像这样:
private void button1_Click(object sender, EventArgs e)
{
Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";
xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls");
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
我不想使用它,因为:
如果我导出大量数据,那将是ueberslow
我希望这可以在没有安装Microsoft Excel的PC上运行
我也尝试了CarlosAg.Excel.Xml,它似乎有效,除了当我打开文件时,我收到来自excel的警告,该文件不是XLS格式,而是其他一些一。
任何人都可以向我推荐一个可以执行此操作的免费c#库,或者向我展示如何使用传统的.Net库将数据保存到XLS中吗?
答案 0 :(得分:1)
使用codeplex.com
这个项目是POI Java项目的.NET版本 http://poi.apache.org/。 POI是一个开源项目,可以提供帮助 你读/写xls,doc,ppt文件。它有广泛的应用。
以下是如何使用NOPI的示例:
using (FileStream fileOut = new FileStream("poi-test.xls", FileMode.OpenOrCreate))
{
HSSFWorkbook workbook = new HSSFWorkbook();
var worksheet = workbook.CreateSheet("POI Worksheet");
// index from 0,0... cell A1 is cell(0,0)
var row1 = worksheet.CreateRow((short)0);
var cellA1 = row1.CreateCell((short)0);
cellA1.SetCellValue("Hello");
ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.FillForegroundColor = HSSFColor.GOLD.index;
cellStyle.FillPattern = FillPatternType.SOLID_FOREGROUND;//.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellA1.CellStyle = cellStyle;
ICell cellB1 = row1.CreateCell((short)1);
cellB1.SetCellValue("Goodbye");
cellStyle = workbook.CreateCellStyle();
cellStyle.FillForegroundColor = HSSFColor.LIGHT_CORNFLOWER_BLUE.index;
cellStyle.FillPattern = FillPatternType.SOLID_FOREGROUND;
cellB1.CellStyle = cellStyle;
var cellC1 = row1.CreateCell((short)2);
cellC1.SetCellValue(true);
var cellD1 = row1.CreateCell((short)3);
cellD1.SetCellValue(new DateTime());
cellStyle = workbook.CreateCellStyle();
cellStyle.DataFormat = HSSFDataFormat
.GetBuiltinFormat("m/d/yy h:mm");
cellD1.CellStyle = cellStyle;
workbook.Write(fileOut);
}
价:
Creating Excel spreadsheets .XLS and .XLSX in C# by Leniel Macaferi 。
答案 1 :(得分:0)
另一种方法是导出为CSV(逗号分隔值)文件,这些文件只是包含数据的纯文本文件。 Excel(如果已安装)通常是CSV文件的默认应用程序,您不需要第三方库。