我想要一种基于提供的输入以及分隔符作为输入将数据表数据写入.xls,.xlsx或.csv的方法
public class DataTableExtensions
{
/*Input Params : Datatable input
fileFormat(.xls,.csv,.xlsx)
delimeter('\t' (tabSpace) or ,(comma) or | (pipe Symbol)
filepath - Any local folder*/
public void WriteToCsvFile(DataTable dataTable,string fileFormat,string delimeter, string filePath)
{
//Code to convert file based on the input
//Code to create file
System.IO.File.WriteAllText(filePath, fileContent.ToString());
}
}
答案 0 :(得分:0)
您说评论中每2小时只有1000行。对于C#程序来说,这是可接受的数据量。我会说剩下的最大问题是您使用的输出格式。
。 CSV 是最简单的一种。这种格式可以通过File.WriteLine()和一些字符串来实现。我知道在C#中没有CSV解析器或编写器代码的构建,但是有很多第三方代码。
。 XLS 需要(t)生锈的Office COM Interop。这要求安装Office,并且不能在非交互式会话(如Windows服务)中工作。在使用COM互操作的所有 normal 问题中最重要的。
在现有的类上有一个奇怪的“导出到XLS”功能,但是很少见,介于两者之间,以及所获得的一切。不幸的是,由于我们一直以COM Interop作为后备,我们从未完全开发出可用于.XLS的独立库。具有讽刺意味的是,在C#/。NET中使用这种旧格式要比在Java中困难。
。 XLSX ,但是更容易。可以使用OpenXML SDK来编写。或XML writer和ZipArchive类:在所有的x格式的核心处都是重命名的.ZIP容器中的一堆.XML文件。甚至应该有第三方代码来简化SDK的使用。
.CSV是最低的公分母,并且最容易创建。但是,如果用户应该打开此文档,则缺少格式设置可能会成为问题。
.XSLX是我的选择,如果您需要用户打开它。
.XSL我会避免像一群愤怒的蜜蜂。
答案 1 :(得分:0)
I have written this Program to convert Xls,XLSx using console application with
Datatable as input and for text file I have written a simple stream writer logic.This works good. Initially I have installed package manage console and below code
using expertXLs package.I am not sure wheather I can share the key of that
or not.Please search the key and give in config before running it
Package Manage Console - Install-Package ExpertXls.ExcelLibrary -Version 5.0.0
Code :
--------
private static void GenerateTxtFileFromDataTable(DataTable sampleDataTable,string delimiter)
{
var _expertxlsLK = ConfigurationManager.AppSettings["ExpertxlsLK"];
//GetKey Value from config
// Create the workbook in which the data from the DataTable will be loaded 0 for 2003 Excel(xls),1 for 2007 Excel(xlsx)
ExcelWorkbookFormat workbookFormat = ExcelWorkbookFormat.0;
// create the workbook in the desired format with a single worksheet
ExcelWorkbook workbook = new ExcelWorkbook(workbookFormat);
workbook.EnableFormulaCalculations();
workbook.LicenseKey = _expertxlsLK;
// get the first worksheet in the workbook
ExcelWorksheet worksheet = workbook.Worksheets[0];
// set the default worksheet name
worksheet.Name = "ClaimInformation";
// load data from DataTable into the worksheet
worksheet.LoadDataTable(sampleDataTable, 1, 1, true);
worksheet.Workbook.EnableFormulaCalculations();
workbook.Save(@"M:\Rupesh\test.xlsx");
workbook.Close();
}