Tag: datatable

将Excel导出到System.DataTable时出现未知问题

我正试图从Excel文件到DataTable的数据。 这是我的代码片段: FilePath = WebConfig.SavePath + "Book2.xls"; // Create the connection object OleDbConnection oledbConn = new OleDbConnection(WebConfig.ExcelConnection(FilePath)); // Open connection oledbConn.Open(); // Create OleDbCommand object and select data from worksheet Sheet1 //WebConfig.SheetNameFirstExcel OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + "Sheet1" + "$]", oledbConn); // Create new OleDbDataAdapter OleDbDataAdapter oleda = new OleDbDataAdapter(); oleda.SelectCommand […]

不规则的System.Data.OleDb.OleDbException(0x80004005):无效的参数问题

在生产系统上,我们是有时读取excel到数据表(在同一代码相同的文件不会今天工作,但会在其他date)获取下面的错误信息。 System.Data.OleDb.OleDbException(0x80004005):无效的参数。 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object&executeResult)at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object&executeResult)at System.Data.OleDb在System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior行为,string方法)System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior行为)上的.OleDbCommand.ExecuteCommand(CommandBehavior行为,对象和executeResult) System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,DataTable [] datatables,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand命令,System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior行为) System.Data.Common.DbDataAdapter.Fill(DataTable [] dataTables,Int32 startRecord,Int32 maxRecords,IDbCommand command,CommandBehavior行为)在System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) 但问题是,在生产服务器上,它今天运行良好,但明天或后天,它将无法正常工作,然后再次开始工作。 下面是代码。 string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + readFilePath + ";Extended Properties=\"Excel 12.0;\""; ExcelConnection = new OleDbConnection(ConnectionString); string ExcelQuery = "Select FORMAT(SAMPDATE,'dd/MM/yyyy') as SAMPDATE,FORMAT(LANDED_ON,'dd/MM/yyyy') as LANDED_ON,FORMAT(RECDATE,'dd/MM/yyyy') as RECDATE,* from [Sheet1$]"; ExcelCommand = new […]

Datatable to Excel Interop VS其他方法; 需要另存为/打开popup

我已经实现了下面的方法,似乎工作正常,但它将文件保存到预定义的位置,而不是我想给用户一个选项,就像任何常规的下载popup窗口:打开,保存,另存为。 任何想法? 为了克服“当前线程必须设置为单线程单元(STA)模式之前,可以使OLE调用”exception,线程必须执行,请参阅编辑! 编辑: 1) using System.Threading; 2) [STAThread] private static void ExportToExcel(DataTable dt) { Thread t = new Thread(SaveIt); t.SetApartmentState(ApartmentState.STA); t.Start(dt); } 3) static void SaveIt(Object dt) { DataTable table = (DataTable)dt; System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog(); if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) SaveName = sfd.FileName; else SaveName = "ResourceProfile"; workbook.SaveAs(….. } 编辑结束。 private static void […]

从IEnumerable对象导出到Excel数据表中的数据在c#中的优雅方式?

我的数据保存在一个IEnumerable对象中,我希望将其填充到Excel表中。 基本上我能够导出数据到Excel工作表,但我不知道以更优雅的方式导出表。 这是我的: //Populate column names String[] columnNames = {"val1", "val2", "val3", "val4", "val5"}; for (int p = 1, l = 1; l <= 5;l++) { xlWorkSheet.Cells[p, l] = columnNames[l-1]; } //Entries is an IEnumerable object int i = 1; foreach (var e in Entries) { int j = 1; xlWorkSheet.Cells[i, j] = e.val1; j++; […]

添加href到Excel导出C#

我需要帮助解决这个问题,我正在将我的数据导出到一个可以正常工作的excel文件中。 问题是我正在试图使其中一列超链接到文档,但是当它开始build立Excel文件我得到这个错误。 预先感谢您的帮助。 '这个操作不支持相对URI'。 using OfficeOpenXml; using OfficeOpenXml.Table; public void ExportExcelFile(System.Data.DataTable excelData, string excelSheetName) { using (var package = new ExcelPackage()) { ExcelWorksheet ws = package.Workbook.Worksheets.Add(excelSheetName); int rowCount = 1; foreach (DataRow rw in excelData.Rows) { //excelData.Columns.RemoveAt(0); rowCount += 1; for (int i = 1; i < excelData.Columns.Count + 1; i++) { // Add the […]

在Excel中使用EPPlus Lib C#.Net格式化列

我的数据表具有来自数据库表的信息,我可以使用EPPlus库将DataTable值转储到Excel中。 现在, 我想通过将单元格的范围(让A1到Z1)设置为特定的方向(45度)来格式化Excel中的列名,并给它一些颜色 我正在使用VS2010进行开发。 我怎样才能做到这一点?

使用正确的列宽和格式从DataSet加载DataTable

我想知道如何调整列宽以适应数据的宽度,并将值设置为C#中的2个小数位,而从DataSet加载时使用Visual Studio Tools for Office。 下面是我用来填充DataTable的代码: public DataTable myData { get { if (_myDataSet.Tables.Contains("TableName")) { return _myDataSet.Tables["TableName"]; } else { return null; } } } 任何帮助将不胜感激! 谢谢!

数据表自动转换为“0.000095”至“9.5E-05”

我从包含这样的数据“0.000095”的excel表格填充我的数据集。 数据集返回的Datatable包含stringtypes的所有列。 但由于某些原因,我想精确的数据是在Excel表中,而不是自动将其转换为“9.5E-05”。 string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; OleDbDataAdapter adapter; DataSet ds = new DataSet(); adapter = new OleDbDataAdapter("Select * from [Sheet1$]", connstring); adapter.Fill(ds);

Spreadsheetgear为特定列设置数据标志?

我正在尝试这样做: IWorksheet worksheet = Factory.GetWorkbook().Worksheets[0]; IRange range = worksheet.Cells["A1"]; range.CopyFromDataTable(dataTable, SetDataFlags.None); worksheet.Cells.Columns.AutoFit(); return worksheet; 这很正常,但是我遇到了一个问题。 我有一个列有一个非常长的数字,可能在前面是零,我需要它被input并显示为文本。 如果我做了一个特定的单元格查找,如: var cell = range["U34"].Value; 数据已经变成科学记数法,所以没有多less格式化之后修复它。 我尝试了SetDataFlags.AllText,这很好,除了打破了工作表的其余部分,因为所有的数字都以文本forms存储,这是不可接受的。 我不知道如何解决这个问题。 解决scheme:因为我只是想改变一列,如果它是存在的,并且很多列是dynamic的,我去“预格式化”的路线。 从数据表中find列索引: int ColumnIndex = -1; for (int x = 0; x < dataTable.Columns.Count; x++) { if (dataTable.Columns[x].ColumnName.Equals("Whatever")) { ColumnIndex = x; } } worksheet.Cells[0, ColumnIndex, 0, ColumnIndex].EntireColumn.NumberFormat = "@"; 然后执行CopyFromDataTable,将Flags设置为None,一切都完美无瑕!

为什么在填写DataTable时OleDbDataAdapter会留下工件?

我写了一些应该为Excel文件中的每个WorkSheet获取DataTable的方法: 第一步是获取包含在.xlsx文件中的所有工作表的名称: private static List<string> GetSheetNames(string filePath) { List<string> sheetNames = new List<string>(); DataTable dt = null; try { OleDbConnection connection = new OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + filePath + "';Extended Properties='Excel 12.0 Xml;HDR=YES;'"); connection.Open(); dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dt == null) { return null; } // Add the sheet name to the string array. foreach […]