小编Jas*_*ley的帖子

导入和导出Excel - 什么是最好的库?

在C#中的一个ASP.NET应用程序中,我们采用某种数据集合(SubSonic集合)并将其导出到Excel.我们还想以特定格式导入Excel文件.我正在寻找一个可以用于此目的的库.

要求:

  • Excel 2007文件(Excel 2003是否支持超过64k行?我需要更多.)
  • 在服务器上不需要Excel
  • 采用类型化集合,如果可以,则尝试将数字字段作为数字放入Excel中.
  • 适用于大文件(100k到10M) - 足够快.
  • 导出GUID时不会崩溃!
  • 不花钱(不像aspose这样的企业库).免费总是很棒,但可以是商业图书馆.

你推荐什么图书馆?您是否将它用于大量数据?还有其他解决方案吗?

现在,我正在使用一个简单的工具来生成稍后由Excel加载的HTML,但是我正在丢失一些功能,加上Excel在我们加载它时会抱怨.我不需要生成图表或类似的东西,只需导出原始数据.

我在想平坦的CSV文件,但Excel是客户的要求.如果我有一个工具可以转换为Excel,我可以直接使用CSV.鉴于Excel 2007是一种基于xml(和压缩)的文件格式,我猜这种库应该很容易找到.但是,对我来说最重要的是你的意见和看法.


编辑:具有讽刺意味的是,在我看来,并以最多的票数回答,最好的Excel导入和导出库根本没有出口.对于所有情况都不是这种情况,但它适用于我的情况.XLS文件仅支持64k行.XLSX最多支持1M.我尝试过的免费库具有糟糕的性能(当你有200k行时,一秒加载一行).我没有尝试过付费的,因为当你需要的是一个快速的XLSX < - > CSV转换例程时,我觉得它们的价值过高.

c# asp.net excel export-to-excel import-from-excel

177
推荐指数
8
解决办法
19万
查看次数

WCF超时异常详细调查

我们有一个应用程序,它具有在IIS7上运行的WCF服务(*.svc)以及查询该服务的各种客户端.服务器正在运行Win 2008 Server.客户端正在运行Windows 2008 Server或Windows 2003服务器.我得到以下异常,我看到它实际上可能与大量潜在的WCF问题有关.

System.TimeoutException: The request channel timed out while waiting for a reply after 00:00:59.9320000. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout. ---> System.TimeoutException: The HTTP request to 'http://www.domain.com/WebServices/myservice.svc/gzip' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer …
Run Code Online (Sandbox Code Playgroud)

wcf timeout timeoutexception

94
推荐指数
1
解决办法
11万
查看次数

从类型化列表中获取IDataReader

我有一List<MyObject>百万元素.(它实际上是一个SubSonic Collection,但它没有从数据库加载).

我目前正在使用SqlBulkCopy,如下所示:

private string FastInsertCollection(string tableName, DataTable tableData)
{
    string sqlConn = ConfigurationManager.ConnectionStrings[SubSonicConfig.DefaultDataProvider.ConnectionStringName].ConnectionString;
    using (SqlBulkCopy s = new SqlBulkCopy(sqlConn, SqlBulkCopyOptions.TableLock))
    {
        s.DestinationTableName = tableName;
        s.BatchSize = 5000;
        s.WriteToServer(tableData);
        s.BulkCopyTimeout = SprocTimeout;
        s.Close();
    }
    return sqlConn;
}
Run Code Online (Sandbox Code Playgroud)

我使用SubSonic的MyObjectCollection.ToDataTable()从我的集合中构建DataTable.但是,这会在内存中复制对象并且效率低下.我想使用SqlBulkCopy.WriteToServer方法,该方法使用IDataReader而不是DataTable,这样我就不会在内存中复制我的集合.

从我的列表中获取IDataReader的最简单方法是什么?我想我可以实现一个自定义数据阅读器(如http://blogs.microsoft.co.il/blogs/aviwortzel/archive/2008/05/06/implementing-sqlbulkcopy-in-linq-to-sql.aspx)但是如果不编写一堆通用代码,我必须做一些更简单的事情.

编辑:似乎没有人可以从对象集合中轻松生成IDataReader.接受当前的答案,即使我希望框架中内置的东西.

c# sql linq sqlbulkcopy

37
推荐指数
3
解决办法
2万
查看次数

由于jQuery Mobile,IE9窗口失去了焦点

在我们的产品中,我们在ASP.NET网站中使用了最新的jQuery Mobile开发版本.每次我们进行ASP.NET回发时,浏览器窗口都会显示在屏幕的后面.

例:

  • 最大化任何窗口.示例:Visual Studio,Word,Windows资源管理器.
  • 最大化IE9.IE9是你在屏幕上看到的唯一东西.
  • 单击我们的解决方案中的一个按钮进行回发.
  • IE9不再可见.无论它背后的是什么,现在都有焦点(并填充屏幕,因为它最大化)

我知道只有解决方法:

  • 不要包含jQuery移动脚本.
  • 确保IE9是Windows中唯一的最大化窗口.

我不知道jQuery Mobile在后台做了什么,我假设这是IE9中最终会修复的错误.但是,如果您在此期间有任何关于如何防止它发生的提示,那就太棒了.

编辑:似乎并非每次回发都有.它在每个回发上执行Response.Redirect.我应该补充一点,我所有的回发实际上都是使用ASP.NET AJAX,而不是完整的回发.

javascript asp.net internet-explorer-9 jquery-mobile

12
推荐指数
2
解决办法
2910
查看次数

SQL Server 2008自动生成更改脚本遗留问题

我们在SQL Server Management Studio(SSMS)中启用"工具==>选项==>设计器==>表和数据库设计器==>自动生成更改脚本".更改数据库模式时,我们保存脚本,并且由于我们已经在运行应用程序的所有计算机上安装了数据库迁移工具,因此我们可以在下一次软件版本更新期间同步模式.

我们最近将开发副本和一些生产服务器切换到SQL Server 2008.但是,我们仍然有几十台SQL Server 2005在运行我们的软件.我们暂时没有计划升级这些.

问题很简单.SSMS生成的脚本并不总是与SQL Server 2005一起使用.SMSS正在为命令添加额外的元数据(例如,关于锁升级).要使用2005创建脚本,我们必须手动删除额外信息,否则脚本不会运行.

有没有办法配置SSMS生成与SQL Server 2005兼容的脚本?是否有自动摆脱额外SQL的工具或至少让我们知道哪些文件有问题?

change-management sql-server-2005 sql-server-2008

11
推荐指数
1
解决办法
5543
查看次数

我们可以简化这个字符串编码代码

是否可以将此代码简化为更清晰/更快的形式?

StringBuilder builder = new StringBuilder();
var encoding = Encoding.GetEncoding(936);

// convert the text into a byte array
byte[] source = Encoding.Unicode.GetBytes(text);

// convert that byte array to the new codepage. 
byte[] converted = Encoding.Convert(Encoding.Unicode, encoding, source);

// take multi-byte characters and encode them as separate ascii characters 
foreach (byte b in converted)
    builder.Append((char)b);

// return the result
string result = builder.ToString();
Run Code Online (Sandbox Code Playgroud)

简单地说,它需要一个带有中文字符的字符串,如郓,并将它们转换为ài.

例如,十进制中的中文字符为十六进制的37126或0x9106.

请参见http://unicodelookup.com/#0x9106/1

转换为字节数组,得到[145,6](145*256 + 6 = 37126).当在CodePage 936(简体中文)中编码时,我们得到[224,105].如果我们将这个字节数组分解为单个字符,我们224 = e0 =à和105 = 69 = i在unicode中.

请参见 …

c# optimization character-encoding

9
推荐指数
2
解决办法
9591
查看次数

.NET 4.0上的System.Net.Dns.GetHostEntry(dnsServer)问题

我在.NET 2.0/3.5环境中使用以下代码数月(没有问题):

string server="192.168.1.3";
IPHostEntry ipe = System.Net.Dns.GetHostEntry(server);
IPAddress ipa = ipe.AddressList[0];
IPEndPoint ipep = new IPEndPoint(ipa, (int)UdpServices.Domain);
Run Code Online (Sandbox Code Playgroud)

在这里,服务器硬编码为IP地址,但在我的应用程序中,它可能类似于"server.test.com".

将我的项目转换为.NET 4.0时,此代码在直接传递IP地址时仍然停止工作(仍然使用主机名).它崩溃了这个例外:

System.Net.Sockets.SocketException was unhandled
  Message=The requested name is valid, but no data of the requested type was found
  Source=System
  ErrorCode=11004
  NativeErrorCode=11004
  StackTrace:
       at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6)
       at System.Net.Dns.GetHostEntry(String hostNameOrAddress)
Run Code Online (Sandbox Code Playgroud)

因为我需要的只是生成的IPEndPoint,我可以通过使用IPAddress.Parse来生成IPAddress对象来解决这个问题,但我想知道你们是否知道为什么在.NET 4.0中这种行为发生了变化?(如果我们无法从IP地址解析主机名,则会抛出异常).

dns .net-4.0 socketexception

8
推荐指数
1
解决办法
1万
查看次数

SQL Server索引顺序(日期时间字段)

我有一个关于SQL Server索引的问题.我不是DBA,并且假设你的答案很明确.我正在使用SQL Server 2008.

我有一个类似于以下的表(但有更多的列):

CREATE TABLE [dbo].[Results](
    [ResultID] [int] IDENTITY(1,1) NOT NULL,
    [TypeID] [int] NOT NULL,
    [ItemID] [int] NOT NULL,
    [QueryTime] [datetime] NOT NULL,
    [ResultTypeID] [int] NOT NULL,
    [QueryDay]  AS (datepart(day,[querytime])) PERSISTED,
    [QueryMonth]  AS (datepart(month,[querytime])) PERSISTED,
    [QueryYear]  AS (datepart(year,[querytime])) PERSISTED,
 CONSTRAINT [PK_Results] PRIMARY KEY CLUSTERED 
(
    [ResultID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

这里要注意的重要字段是ResultID,主键,QueryTime是生成结果的日期时间.

我还有以下索引(以及其他):

CREATE NONCLUSTERED INDEX [IDX_ResultDate] ON …
Run Code Online (Sandbox Code Playgroud)

database sql-server indexing

7
推荐指数
1
解决办法
8629
查看次数

在Epson TM-T88IVM上打印简体中文字符

我正在尝试使用C#中的Microsoft Point of Service SDK在Epson TM-T88IV M(并行端口)上打印中文字符.但是,它们在打印机上显示为问号.(?)

我的PosPrinter具有以下有效的CharacterSetList:255,437,850,852,858,860,863,865,866,936,998,999,1252

以下CapCharacterSet:汉字

代码页1252是默认的Windows代码页.936是简体中文的代码页.在这种情况下,我使用的是代码页936,但从未能在打印机上显示中文字符.

例:

string str = "????";
// open device as variable _ReceiptPrinter, claim it, mark it as enabled 
_ReceiptPrinter.CharacterSet = 936;
_ReceiptPrinter.PrintNormal(PrinterStation.Receipt, str);
Run Code Online (Sandbox Code Playgroud)

这打印出所有中文字符替换为?的文本.

我不确定是否需要在打印前指定其他转义码(ESC R 15?)或者我的打印机在Epson OPOS(v2.50e)中配置错误.我尝试了很多东西,但没有任何效果.任何想法或代码示例?

注意:在自检中,打印机会打印中文字符.

printing epson opos point-of-sale

7
推荐指数
1
解决办法
1万
查看次数

禁用ASP.NET AJAX的原因

我有一个使用ASP.NET AJAX和AJAX控件工具包的ASP.NET应用程序.该应用程序在PC上的所有最新浏览器上运行良好.它也适用于我的iPad,至少在第一次访问应用程序时.我发现如果我关闭iPad并稍后返回页面(通过书签或类似文件),该网站就会被破坏.我已经缩小了ASP.NET/ASP.NET AJAX问题/ bug /限制的失败,我正在寻求一些帮助来推进.

使用Fiddler作为iPad的代理服务器,我在重新打开页面时发现了以下问题.

  1. 我的*.skin文件未正确应用.生成的样式标记不包含*.skin文件中指定的某些参数.
  2. 该页面不包含MicrosoftAjaxWebForms.js文件.(工作时,它会在所有ToolkitScriptManager脚本的正上方发出对ScriptResource.axd的引用.
  3. 该页面不包含对以函数WebForm_FindFirstFocusableChild(control)开头的另一个js文件的引用
  4. 该页面不包含一些隐藏字段,例如__LASTFOCUS,__ EVENTTARGET和__EVENTARGUMENT
  5. 该页面不包含使用document.forms ['aspnetForm']和定义__doPostBack的脚本块.
  6. 该页面不包含执行Sys.WebForms.PageRequestManager._initialize的脚本块
  7. 其他一些初始化脚本不存在(设置焦点,创建updateprogress等)

不知何故,似乎框架决定它不需要这些脚本并且不会发出它们.鉴于所有脚本都是相互关联的,必然有一个共同的原因.这可能与不包含*.skin属性的原因有关.有任何想法吗?我会想到浏览器功能,但这只发生在后续访问网站,而不是第一次.

编辑:绝对看起来像浏览器功能问题.

请求有效:用户代理:Mozilla/5.0(iPad; U; CPU OS 4_3_3,如Mac OS X; en-us)AppleWebKit/533.17.9(KHTML,类似Gecko)版本/ 5.0.2

请求不:User-Agent:Mozilla/5.0(iPad; U; CPU OS 4_3_3,如Mac OS X; en-us)AppleWebKit/533.17.9(KHTML,如Gecko)Mobile/8J2

将尝试在App_Browsers中创建自定义文件并使用额外信息进行回发.

asp.net webforms asp.net-ajax

7
推荐指数
1
解决办法
2175
查看次数