Hang on, after my last post I thought about your question a bit more and realised that CSV is not really the problem. The hard bit is getting data out of a data logger through a PNS reliably. To do this I wouldn't use CSV but would get one sample at a time.
I'll describe what I mean using a simple example - I hope it's the kind of thing you're wanting to do.
Lets have a PicAxe controlling a sensor, and every minute it grabs a reading from the sensor and places the result in a circular buffer in serial flash EEPROM that's hanging off the i2c bus. Then we have a web browser that is displaying a page which contains some Javascript. This script polls the data logger every 15 seconds and if a sample is available it downloads it and adds it to a table that the page displays. So over time you see the web page table grow with new data without having to click on anything. The PNS sits between the PicAxe and the browser and is responsible for storing the web page and controlling the data flow.
The problem is that the web page script has to get a sample just once and no sample must be lost (unless the circular buffer fills up because the web page script is not running). To fix this we need to do some handshaking between the script and the PicAxe, and this is the tricky bit. For this we use the PNS P0 output, connecting it to the PicAxe so the data logger can sense its value (either by polling or by interrupt).
The idea is that P0 acts as a "data ready" signal. The PicAxe waits for P0 to be low and the circular buffer to be non-empty. When it sees this condition it copies the first sample from the circular buffer into the PNS general purpose memory - if the samples are two bytes long we just put the sample into PNS locations 24 and 25. Then it sets the P0 signal by writing to the PNS output port register (location 16). When the PicAxe next polls it will see that P0 is set and so not write anymore data to the PNS.
The web browser script, meanwhile, is polling the PNS web server every 15 seconds. It is GETing a cgi page called data.cgi that contains "?64,?24,?25". The PNS replaces the command codes with the values of P0, location 24 and location 25 producing a CSV record like this "0,12,34" or this "1,12,34". The first integer is 0 if there is no data ready, in which case the second two numbers are old junk. The first integer is 1 if there is some data to be read, and the second two numbers are the values of the next sample. The script tests the first number and ignores the data if it is 0. However if the first number is 1, the script puts the second two into the table (this needs some advanced Javascript that manipulates the structure of the web page - lots of examples on the web or post again for more help). Having updated the table the script must acknowledge receipt of the data, allowing the PNS to serve up the next sample. To do this it must clear P0, which it does by issuing a GET with a parameter like this: "data.cgi?00=0". The data returned is ignored here, what's important is that 00=0 is a command to "switch output pin 0 off" - i.e. clear P0. Finally the script will loop to check if another sample is ready, perhaps after a brief pause, before lapsing back into its 15 second poll routine. The reason for not polling faster than this is just to avoid loading the PNS web server too much, as it will lock the PicAxe out of the i2c bus while it is serving the web requests.
Something else to consider is what happens when the circular buffer fills up - the PicAxe obviously has to throw something away, perhaps the oldest sample in the buffer. But it might be nice to set a flag to indicate that this has happened. One possibility is to have a counter of the number of samples discarded stored in a PNS memory location so the web page script can see whether data has been lost. The script can write to the location to clear it once it has noted the loss.
Finally, it is possible to write the client application in something other than Javascript, in which case you can easily construct a CSV file with the data gathered. Otherwise with more Javascript magic it is possible to write files to your local disk, though you have to setup security permissions carefully.